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

Javascript approach to copy properties of first array(of objects) into another array(of objects) of different lengths

本文关键字:数组 对象 另一个 Javascript 方法 复制 第一个 属性      更新时间:2023-09-26

我有一个对象数组,比如

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

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

下面的代码完成了这项工作:

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);

如果你想要一种更慢、更通用的方法来比较对象,我建议你阅读这个问题的答案:JavaScript 中的对象比较

(假设destObj.length<srcObj.length已知(

也许:

var i;
while ((i = destObj.length) < srcObj.length) {
  destObj.push(srcObj[i]);
}

(但请注意,这只是数组项的一个浅拷贝,从srcObj到destObj;"复制"的对象值实际上将由两个数组通过引用共享;这可能是也可能不是您想要的(