js两个数组比较,添加不同属性值,for循环与indexOf的使用

本文通过一个具体的编程问题展示了如何优化数组遍历和条件判断。作者分享了在处理两个数组对比时,如何避免使用双重循环,转而采用更高效的单层循环,并结合indexOf方法来实现预期功能。文中还反思了之前使用双重循环导致的数据错误,提醒开发者注意循环中的数据返回问题。最后,提供了修正后的代码实现,强调了在编程中简洁与效率的重要性。
摘要由CSDN通过智能技术生成

实现要求:

2个数组进行对比valList中有对应的list数组中age值就添加sort并且赋值为1,否则就给赋值为2。

//用了一个按钮,点击打印出list数据
<button @click="demo">for循环与indexOf的使用</button>
demo () {
      var valList = [3, 2, 1, 12];
      var list = [{ name: 'zhansan', age: 3 }, { name: 'lisi', age: 18 }, { name: 'wangwu', age: 12 }, { name: 'xiaohong', age: 5 }];
      for (var i = 0; i < list.length; i++) {
        //不存在则返回-1
        if (valList.indexOf(list[i].age) === -1) {
          list[i].sort = 2;
        } else {
          list[i].sort = 1;
        }
      }
      console.log('aa', list)
      return list;
    }

打印的结果

以下为反思:之前有用双重for循环,然后里面用if,else的判断,return返回时,只会返回外循环最后一个,内循环所有内容,导致数据不正确。

//这是错误写法代码!!!这是错误写法代码!!!这是错误写法代码!!!
      var data = [21, 40, 55, 60, 32];
      var msg = [{ name: 'zhansan', age: 40 }, { name: 'lisi', age: 66 }, { name: 'wangwu', age: 21 }, { name: 'xiaohong', age: 20 }];
      for (var i = 0; i < msg.length; i++) {
        for (var j = 0; j < data.length; j++) {
          if (msg[i].age == data[j]) {
            msg[i].car = '宝马';
          } else {
            msg[i].car = '奔驰';
          }
        }
      }
      console.log(msg)
      return msg;

错误代码
如果只有一个条件判断if,还是可以实现添加单独的。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值