3

我有一个奇怪的情况,我试图用一个新对象更新一个对象数组,但是当我在推送之前放置一个 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 循环中。

我将不胜感激任何帮助。谢谢你。

4

1 回答 1

1

这是因为您在 Chrome 之类的 webkit 浏览器中执行此操作并且console.log()正在排队(这是一个webkit 错误,如果您在 Firefox 或非 webkit 浏览器中执行此操作,则不会发生),因此它会打印稍后的值数组。你需要使用

JSON.stringify(array1);

以获得更准确的结果。

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

function updateA(obj){
  if(obj.ID === array1.ID){
    array1.push(obj); 
    console.log( JSON.stringify(array1));
  }
}
updateA(object1);
于 2013-10-01T00:20:35.670 回答