Постановка задачи: - arr1 - упорядоченный массив со значениями 3,4 и 5. В списке, показанном ниже, все объекты, свойство "c" которых совпадает со свойством элементов массива, должны быть обновлены с помощью index + 1 из найденного индекса на arr1.
У меня есть два разных способа достижения того же, какой из них имеет лучшую временную сложность, и какой следует выбрать?
var arr1 = [3,4,5];
var 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: найти индекс и затем обновить индекс:
list.forEach((obj) => {
var i = arr1.indexOf(obj.c);
if(i > -1) {
obj.c = i +1;
}
});
Использование двух циклов forEach.
arr1.forEach((id,index) => {
list.forEach((obj) => {
if(obj.c === id){
obj.c = index+1;
}
})
});
Какой способ лучше написать и почему?