两层for 循环中赋值问题

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循环中变成局部变量 每次循环的时候去创建一个对象然后刚到数组里面,就好了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值