我有一个对象数组说
srcObj = [{a:1, b:2}, {c:3, d:4}]
destObj = [{a:1, b:2}]
我想将此数组的值复制到另一个数组中,该数组的长度可能比上面的srcObj数组短。我将如何根据srcObj数组的大小构造循环以增加destObj数组的长度,然后将缺少的项从srcObj数组插入destObj数组。
答案 0 :(得分:0)
以下代码完成工作:
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (JSON.stringify(list[i]) === JSON.stringify(obj)) {
return true;
}
}
return false;
}
var srcObj = [{a:1, b:2}, {c:3, d:4}]
var destObj = [{a:1, b:2}]
for(var i = 0; i < srcObj.length; i++) {
if (!containsObject(srcObj[i], destObj)){
destObj.push(srcObj[i]);
}
}
console.log(destObj);
&#13;
如果您想要一种更慢,更通用的方式来比较对象,我建议您阅读问题的答案:Object comparison in JavaScript
答案 1 :(得分:0)
(假设destObj.length&lt; srcObj.length已知)
也许:
var i;
while ((i = destObj.length) < srcObj.length) {
destObj.push(srcObj[i]);
}
(但请注意它只是数组项的浅表副本,从srcObj到destObj;&#34;复制的&#34;对象值实际上将由两个数组共享,通过引用;以及可能是也可能不是你想要的东西。