怎么遍历数组,给对应的属性加1

需要遍历arr1的icon,如果和arr2相同,给arr1对应项的number+1

阅读 5.9k
8 个回答
arr1.forEach((elem0,index0)=> {
  arr2.forEach((elem, index) => {
    if (elem.icon === elem0.icon) {
      elem0.number++
    }
  });
})
var arr1 = [{icon: "1", number: 0},{icon: "2", number: 0},{icon: "3", number: 0},{icon: "4", number: 0}];
var arr2 = [{icon: "2"},{icon: "1"},{icon: "2"}];
var map = {};
for (var i = 0; i < arr1.length; i ++) {
    if (typeof map[arr1[i].icon] == "undefined") {
        map[arr1[i].icon] = [ ];
    }
    map[arr1[i].icon].push( i );
}
for (var i = 0; i < arr2.length; i ++) {
    if (typeof map[arr2[i].icon] != "undefined") {
        arr1[map[arr2[i].icon]].number += 1;
    }
}
console.log(arr1);

for(var i=0;i<arr1.length;i++){

    for(var j=0;j<arr2.length;j++){
        var a = arr1[i].icon;
        var b = arr2[j].icon;
        if(a==b){
            arr1[i].number +=1;
        }
    }
}
console.log(arr1);
比较普通的方法,等大佬来解答高效率的~~

Array.map不行吗?

新手上路,请多包涵

老师布置的作业要自己做

arr1.map(item => item.icon === arr2[0].icon ? item.number+=1 : null);

// arr2存放多个
arr1.map(item => {
  arr2.map(item2 => {
    if (item.icon === item2.icon) {
      return item.number+=1;
    }
  });
 });

试试我这个,新鲜出炉的,绝对可以!^_^

let arr1 = [
  { icon: "1", number: 0 },
  { icon: "2", number: 0 },
  { icon: "3", number: 0 },
  { icon: "4", number: 0 }
];
let arr2 = [{ icon: "2" }];
arr1 = arr1.map(item => 
   JSON.stringify(arr2).indexOf(JSON.stringify({ icon: item.icon })) != -1
    ? { icon: item.icon, number: (item.number += 1) }
    : item
);
新手上路,请多包涵

var arr1 = [{icon:'1',number:'0'},{icon:'2',number:'0'},{icon:'3',number:'0'},{icon:'4',number:'0'}];

var arr2 = [{icon:'2'}];
for(var i = 0;i < arr1.length;i++){
    
    if (arr1[i].icon == arr2[0].icon) {
        
        arr1[i].number ++;
    };
}
console.log(arr1);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题