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

实现要求:

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,还是可以实现添加单独的。


版权声明:本文为Aom_yt原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。