我正在尝试将具有相同ID的对象及其具有相同值的对象对应数组合并到嵌套在对象内部的对象的对应ID中。例如
[{
"id": "1",
"reference": "<p>test 1</p>",
"list": [
{
"text": "<p>text a</p>",
},
{
"text": "<p>text b</p>",
}
]},{
"id": "1",
"reference": "<p>test 1</p>",
"list": [
{
"text": "<p>text b</p>",
}
]},{
"id": "2",
"reference": "<p>test 2</p>",
"list": [
{
"text": "<p>test e</p>",
},
{
"text": "<p>text c</p>",
},
{
"text": "<p>text c</p>",
}
]},{
"id": "2",
"reference": "<p>test 2</p>",
"list": [
{
"text": "<p>test e</p>",
},
{
"text": "<p>text c</p>",
}
]},{
"id": "3",
"reference": "<p>test 3</p>",
"list": [
{
"text": "<p>text d</p>",
}
]}]
预期的结果是
[{
"id": "1",
"reference": "<p>test 1</p>",
"list": [
{
"text": "<p>text a</p>",
},
{
"text": "<p>text b</p>",
}
]},{
"id": "2",
"reference": "<p>test 2</p>",
"list": [
{
"text": "<p>text c</p>",
},
{
"text": "<p>test e</p>",
}
]},{
"id": "3",
"reference": "<p>test 3</p>",
"list": [
{
"text": "<p>text d</p>",
}
]}]
我尝试了以下方法,但没有得到预期的结果。不知道我要去哪里错了。请不要建议使用.reduce()
。
const originalArray = [
{
"id": "1",
"reference": "<p>test 1</p>",
"list": [
{
"text": "<p>text a</p>",
},
{
"text": "<p>text b</p>",
}
]
},
{
"id": "1",
"reference": "<p>test 1</p>",
"list": [
{
"text": "<p>text b</p>",
}
]
},
{
"id": "2",
"reference": "<p>test 2</p>",
"list": [
{
"text": "<p>test e</p>",
},
{
"text": "<p>text c</p>",
},
{
"text": "<p>text c</p>",
}
]
},
{
"id": "2",
"reference": "<p>test 2</p>",
"list": [
{
"text": "<p>test e</p>",
},
{
"text": "<p>text c</p>",
}
]
},
{
"id": "3",
"reference": "<p>test 3</p>",
"list": [
{
"text": "<p>text d</p>",
}
]
}
];
var newArray = [];
var lookupObject = {};
for (var i in originalArray) {
lookupObject[originalArray[i]["id"]] = originalArray[i];
}
for (i in lookupObject) {
newArray.push(lookupObject[i]);
}
console.log(newArray)
提前致谢。
您可以使用嵌套对象来跟踪可见值。
const
originalArray = [{ id: "1", reference: "<p>test 1</p>", list: [{ text: "<p>text a</p>" }, { text: "<p>text b</p>" }] }, { id: "1", reference: "<p>test 1</p>", list: [{ text: "<p>text b</p>" }] }, { id: "2", reference: "<p>test 2</p>", list: [{ text: "<p>test e</p>" }, { text: "<p>text c</p>" }, { text: "<p>text c</p>" }] }, { id: "2", reference: "<p>test 2</p>", list: [{ text: "<p>test e</p>" }, { text: "<p>text c</p>" }] }, { id: "3", reference: "<p>test 3</p>", list: [{ text: "<p>text d</p>" }] }],
newArray = [],
lookupObject = {};
for (const item of originalArray) {
if (!lookupObject[item.id]) {
lookupObject[item.id] = { text: {}, payload: { ...item, list: [] } };
newArray.push(lookupObject[item.id].payload);
}
for (const { text } of item.list) {
if (!lookupObject[item.id][text]) {
lookupObject[item.id][text] = true;
lookupObject[item.id].payload.list.push({ text });
}
}
}
console.log(newArray);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句