1:问题代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!-- <script src='js/jquery-3.3.1.min.js'></script>-->
<script>
var data = [{
'id': 282562
},
{
'id': 282563
}
]
var information = [];
var array = {
'passport': '',
'cards': '',
'property': ''
}
for(let i = 0; i < data.length; i++) {
information.push({
[data[i].id]: array
});
}
console.log(information)
var index = 0;
for(var Key in information) {
console.log(Key)
if(Key == index) {
// console.log('joker')
for(var i in information[Key]) {
console.log(information[Key][i])
console.log(Key)
console.log(index)
information[Key][i].passport = 'joker';
}
}
}
console.log(information)
</script>
</body>
</html>
根据要求,只想给当前点击的passport赋值joker,但是这样写之后,代码没有问题,结果却全部赋值了
console结果:
其实只想给第一个ID为28256的赋值joker
很无奈,代码没问题,但是不是所想逻辑,
解决代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!-- <script src='js/jquery-3.3.1.min.js'></script>-->
<script>
var data = [{
'id': 282562
},
{
'id': 282563
}
]
var information = [];
for(let i = 0; i < data.length; i++) {
var array = {
'passport': '',
'cards': '',
'property': ''
}
information.push({
[data[i].id]: array
});
}
console.log(information)
var index = 0;
for(var Key in information) {
console.log(Key)
if(Key == index) {
// console.log('joker')
for(var i in information[Key]) {
console.log(information[Key][i])
console.log(Key)
console.log(index)
information[Key][i].passport = 'joker';
}
}
}
console.log(information)
</script>
</body>
</html>
这样,问题就解决了,其实,只是for循环中作用域问题,把全局声明的对象放到for循环中变成局部变量 每次循环的时候去创建一个对象然后刚到数组里面,就好了