在javascript中比较和推送对象数组

时间:2013-11-12 15:34:37

标签: javascript arrays object

ARRAY1:

 [{"Attribute1":"Apple","Attribute2":"jacob.nelson@cognizant.com"}]

数组2:

[{"Attribute1":"orange"}]`

我想将array1中“Attribute1”的值替换为array2中“Attribute1”的值。 我的输出应该像

[{"Attribute1":"orange","Attribute2":"jacob.nelson@cognizant.com"}]

我是javascript的新手。我被困在这里。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您向我们展示的是JSON对象表示。

在这种情况下,你有一个对象数组,所以如果你做下一个:

>>ar=[{"Attribute1":"Apple","Attribute2":"jacob.nelson@cognizant.com"}]
[Object]

这表示你在一个数组中有一个对象,然后你必须得到它:

>>obj=ar[0]
Object {Attribute1: "Apple", Attribute2: "jacob.nelson@cognizant.com"}

然后,如果您需要替换对象中的某些内容,则必须将它们视为OBJECTS!

>>ar2=[{"Attribute1":"orange"}]
>>obj2=ar2[0]
>>obj1.Attribute1=obj2.Attribute1

就是这样!

提示如果你有很多对象,请循环遍历它们:

>>objects_array=[
        {"Attribute1":"Apple","Attribute2":"jacob.nelson@cognizant.com"}, 
        {"Attribute1":"Cucumber","Attribute2":"asd@qwe.com"}
    ]
[Object, Object]
>>for obj in objects_array {
   obj.Attribute1='Whatever'
}

答案 1 :(得分:0)

对于这个案例来说,这可能有点过头了,不过这是:

使用Object.extend

// adds Object.extend if it does not already exist
if (typeof Object.extend !== 'function') {
    Object.extend = function (d /* DESTINATION */, s /* SOURCE */) {
        for (var k in s) {
            if (s.hasOwnProperty(k)) {
                var v = s[k];
                if (d.hasOwnProperty(k) && typeof d[k] === "object" && typeof v === "object") {
                    Object.extend(d[k], v);
                } else {
                    d[k] = v;
                }
            }
        }
        return d;
    };
}

您可以通过以下方式获得所需的结果:

var arr1 = [{"Attribute1":"Apple","Attribute2":"jacob.nelson@cognizant.com"}],
    arr2 = [{"Attribute1":"orange"}];
arr1 = Object.extend(arr1, arr2);
>> [{"Attribute1":"orange","Attribute2":"jacob.nelson@cognizant.com"}]

但是就像评论中提到的那样;如果这是唯一的情况,请手动完成。