我有这两个数组
var array1 = [{
id: "Test1",
value: "Beep"
}, {
id: "Test2",
value: "Meep"
}, {
id: "Test3",
value: "Sheep"
}];
var array2 = [{
id: "Test2"
}, {
id: "Test3"
}],
stuff2: [{
id: "Test1"
}, {
id: "Test3"
}],
stuff3: [{
id: "Test3"
}];
我正在寻找一种方法来插入空对象或null到第二个数组,以便第二个数组看起来像这样:
var array2 = [null, {
id: "Test2"
}, {
id: "Test3"
}],
stuff2: [{
id: "Test1"
}, null, {
id: "Test3"
}],
stuff3: [
null, null, {
id: "Test3"
}
];
这不能是ES6,因为我正在处理它的代码库相当陈旧(AngularJS 1.4)。
我无法绕过这一个。欢迎任何帮助。
答案 0 :(得分:1)
我正在对你实际想要完成的事情做出一些假设(根据你的输入和所需的输出)。我们的想法是,对于包含对象中的每个键(您调用它们的数组),检查stuff
,stuff2
等数组中每个元素的id是否等于对象的数组+ 1中的索引(即stuff[0].id === "Test1"
)。如果不是这种情况,请将null
插入该位置的数组并向前移动。它看起来如下:
var array2 = {
stuff: [{
id: "Test2"
}, {
id: "Test3"
}],
stuff2: [{
id: "Test1"
}, {
id: "Test3"
}],
stuff3: [{
id: "Test3"
}]
};
function fillGaps(obj) {
var keys = Object.keys(obj);
keys.forEach(function (key) {
var arr = obj[key];
for(var i = 0; i < arr.length; i++) {
var id = arr[i].id;
if (id !== "Test" + (i+1)) {
arr.splice(i, 0, null);
}
}
});
return obj;
}
console.log(fillGaps(array2));
&#13;