问题陈述:-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;
}
})
});
哪种写法更好,为什么?
您可以通过一个循环将Map
预先包含值和索引。
第一种方法最好是includes()