第一种
var arr=[
{
id :1,
name:"雪花"
},
{
id:2,
name:"雨滴"
}
]
var obj = {
key,
value
}
var new_arr = []
for(var x = 0;x < arr.length;x++){
obj.key = arr[x].id;
obj.value = arr[x].name;
new_arr.push(obj)
}
console.log(new_arr)
结果为new_arr = [
{
key:2,
value:"雨滴"
},
{
key:2,
value:"雨滴"
}
]
这并不是我想要的结果复制代码
第二种
var arr=[
{
id :1,
name:"雪花"
},
{
id:2,
name:"雨滴"
}
]
var new_arr = []
for(var x = 0;x < arr.length;x++){
var obj = {
key,
value
}
obj.key = arr[x].id;
obj.value = arr[x].name;
new_arr.push(obj)
}
console.log(new_arr)
结果为new_arr = [
{
key:1,
value:"雪花"
},
{
key:2,
value:"雨滴"
}
]
这才是我想要的结果复制代码
解析
第一种:obj 在循环外部声明,则每一次都将会把上一次的结果存入所以两次的结果一样
第二种:obj 在循环内部声明,每一次循环的时候都是重新声明,然后赋值,所以结果是不同
这两种情况在我写项目的时候也在循环取dom元素value值的时候碰到,第一种是每一次都将dom值存入上一次的结果中,所以最终的取值出错,第二种是同事教会我的方法,感谢我的同事。