помогите пожалуйста. Есть 2 массива, один с объектами другой числовой. В числовом хранятся number
из массива с объектами.
Как мне правильно найти посредством числового массива индекс объекта и изменить в объекте selected: true
?
Сейчас с newArr
происходит чудо, но сам arr
меняет значение selected
var arr = [{
name: 'Hello',
selected: false,
number: 14
}, {
name: 'World',
selected: false,
number: 18
}, {
name: '!',
selected: false,
number: 31
}]
var numbers = [14, 31];
var newArr = arr.map((item, index) => numbers.map((number) => item.number == number ? arr[index].selected = true : arr[index]))
console.log(newArr)
Тут нужно понимать несколько вещей:
Чудеса стали возможны потому, что не были учтены базовые особенности map и стрелочных функций. Ну и явно не является эффективным решением перебор массива numbers для каждого элемента массива arr.
Из вопроса не совсем понятно какой именно вы хотите получить результат по этому продемонстрирую 3 (более эффективных) варианта:
Поехали!
Изменяем selected в arr:
var arr = [{name: 'Hello', number: 14}, {name: 'World', number: 18}, {name: '!', number: 31}];
var numbers = [14, 31];
arr.forEach(x => x.selected = numbers.indexOf(x.number) > -1);
console.log(arr);
Cоздаём newArr из объектов массива arr:
var arr = [{name: 'Hello', number: 14}, {name: 'World', number: 18}, {name: '!', number: 31}];
var numbers = [14, 31];
var newArr = arr.map(x => {
x.selected = numbers.indexOf(x.number) > -1;
return x;
});
console.log(newArr);
console.log(arr);
Cоздаём newArr из копий объектов массива arr:
var arr = [{name: 'Hello', number: 14}, {name: 'World', number: 18}, {name: '!', number: 31}];
var numbers = [14, 31];
var newArr1 = arr.map(x => {
var o = Object.assign({}, x);
o.selected = numbers.indexOf(o.number) > -1;
return o;
});
var newArr2 = arr.map(x => Object.assign({selected: (numbers.indexOf(x.number) > -1)}, x));
var newArr3 = arr.map(x => {
return { ...x , selected: (numbers.indexOf(x.number) > -1) };
});
console.log(newArr2);
console.log(arr);
Вот таким образом:
var arr = [{
name: 'Hello',
selected: false,
number: 14
}, {
name: 'World',
selected: false,
number: 18
}, {
name: '!',
selected: false,
number: 31
}]
var numbers = [14, 31];
var newArr = arr.map((item, index) => {
numbers.map((number) => { if (item.number == number) arr[index].selected = true; return arr[index];}); return item;} );
console.log(newArr)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Отправляю запрос, но в reqbody оказывается пусто {}, хотя я вижу что данные нормально уходят
Сделал небольшой сервачок с РПС и хочу с клиента отправить запрос, немогу найти примеры в нетеЕсть куча либ но нету чистого запроса, так что...
Мне надо написать программу, когда вводишь положительное число оно alert-ит положительное, когда отрицательное-отрицательное․
есть React приложение в котором можно осуществить поиск в списке товаров по имени, id, штрих кодуВесь этот поиск осуществляется с помощью одного...