Javascript方法将第一个数组(对象)的属性复制到另一个不同长度的数组(对象)中

时间:2016-03-10 04:54:55

标签: javascript arrays

我有一个对象数组说

srcObj = [{a:1, b:2}, {c:3, d:4}]

destObj = [{a:1, b:2}]

我想将此数组的值复制到另一个数组中,该数组的长度可能比上面的srcObj数组短。我将如何根据srcObj数组的大小构造循环以增加destObj数组的长度,然后将缺少的项从srcObj数组插入destObj数组。

2 个答案:

答案 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;
&#13;
&#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;对象值实际上将由两个数组共享,通过引用;以及可能是也可能不是你想要的东西。