我有一个奇怪的情况,我试图用一个新对象更新一个对象数组,但是当我在推送之前放置一个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循环。
我非常感谢任何帮助。谢谢。
答案 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);