for循环 给数组push值
需求:循环像数组push对象(不一样);
问题现象:数组里面的所有对象一样;
代码(大概形式):
【大概形式就是下面这样,但实际上getValue里面的逻辑更多。下面这段代码不能复现出来】
var detailArr=[{name:"张三",age:12},{name:"张四",age:8}];
var getValue=function(obj){
return obj;
}
var itemRes = null;
var arr=[];
for (let i = 0; i < detailArr.length; i++) {
itemRes =getValue(detailArr[i]);
console.log(itemRes) // {name:"张三",age:12}, {name:"张四",age:8}
arr.push(itemRes)
}
console.log(arr);// arr[{name:"张四",age:8},{name:"张四",age:8}]
【上面的打印结果不是上面代码的真实结果,而是参照实际我的问题的打印】
解决方式:由于打印单个输出结果的时候没问题,所以我就试着将其变为字符串拼接,结果是可以的。【怀疑是引用类型的问题】
var arrstr = "";
...
arrstr += JSON.stringify(itemRes) + "&spliceKeyName";
...
var arrRes = arrstr.split("&spliceKeyName");
for (var key in arrRes){
if(arrRes[key]) arr.push(JSON.parse(arrRes[key]))
}