推送前的数组更新 - javascript

时间:2013-10-01 00:11:04

标签: javascript arrays

我有一个奇怪的情况,我试图用一个新对象更新一个对象数组,但是当我在推送之前放置一个console.log语句时,它表明该数组已经有了一个新对象。它。以下是代码的基础知识:

 var array1=[{
    "Name": "Lake",
    "ID": "1234"
    }];

var object1={
    "Name": "Mountain",
    "ID": "1234"
    };

function testArray() {
    console.log(array1);
    array1.push(object1);

    }

如果对象包含相同的ID,我最终想用新信息更新原始数组。如果它不包含相同的ID,则应附加它。这将发生在array1上的$ .each循环。

我非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

这是因为你是在像Chrome这样的webkit浏览器中进行此操作而console.log()正在排队(它是webkit bug,如果你在Firefox或非webkit中这样做就不会发生这种情况broswer),因此它打印一个以后的数组值。你需要使用

JSON.stringify(array1);

获得更准确的结果。

如果只想在对象包含相同ID时使用新信息更新原始数组,请使用if语句检查ID:

function updateA(obj){
  if(obj.ID === array1.ID){
    array1.push(obj); 
    console.log( JSON.stringify(array1));
  }
}
updateA(object1);