JavaScript-以下执行的复杂性(forEach与forEach-indexOf)

问题描述 投票:-1回答:1

问题陈述:-arr1是值为3、4和5的有序数组。在下面的列表中,所有其属性“ c”与数组元素的属性匹配的对象都应使用的索引+1更新。在arr1找到索引。

我有两种不同的实现方法,哪种方法具有更好的时间复杂度,应该选择哪种方法?

arr1 = [3,4,5];
list = [{a:1,b:2,c:3},{a:1,b:2,c:3},{a:2,b:3,c:5},{a:3,b:4,c:4}];
output: [{a:1,b:2,c:1},{a:1,b:2,c:1},{a:2,b:3,c:3},{a:3,b:4,c:3}];

#1: Find the index and then update the index;

list.forEach((obj) => {
  var i = arr1.indexOf(obj.c);
 if(i > -1){
  obj.c = i +1;
 }
});

#2 - Using two forEach loops.

arr1.forEach((id,index) => {
  list.forEach((obj) => {
     if(obj.c === id){
       obj.c = index+1;
     }
  })
});

哪种写法更好,为什么?

javascript foreach time-complexity indexof
1个回答
0
投票

您可以通过一个循环将Map预先包含值和索引。


0
投票

第一种方法最好是includes()

© www.soinside.com 2019 - 2024. All rights reserved.