Введение
В этом практическом занятии мы будем работать над задачей на программирование на JavaScript, которая заключается в замене или добавлении значений в массив на основе функции сравнения. В ходе этого упражнения вы научитесь использовать оператор расширения, Array.prototype.findIndex(), Array.prototype.push() и Array.prototype.splice() для манипуляций с массивами в JavaScript. Это практическое занятие поможет вам улучшить навыки работы с массивами и функциями в JavaScript.
Как заменить или добавить значение в массив
Для замены элемента в массиве или добавления его, если он отсутствует, следуйте шагам:
- Используйте оператор расширения (
...), чтобы создать поверхностную копию массива. - Используйте
Array.prototype.findIndex(), чтобы найти индекс первого элемента, который удовлетворяет заданной функции сравненияcompFn. - Если такого элемента не найдено, используйте
Array.prototype.push(), чтобы добавить новое значение в массив. - В противном случае используйте
Array.prototype.splice(), чтобы заменить значение по найденному индексу новым значением.
Вот пример, как реализовать эту функциональность:
const replaceOrAppend = (arr, val, compFn) => {
const res = [...arr];
const i = arr.findIndex((v) => compFn(v, val));
if (i === -1) res.push(val);
else res.splice(i, 1, val);
return res;
};
Вы можете использовать эту функцию с массивом объектов следующим образом:
const people = [
{ name: "John", age: 30 },
{ name: "Jane", age: 28 }
];
const jane = { name: "Jane", age: 29 };
const jack = { name: "Jack", age: 28 };
replaceOrAppend(people, jane, (a, b) => a.name === b.name);
// [ { name: 'John', age: 30 }, { name: 'Jane', age: 29 } ]
replaceOrAppend(people, jack, (a, b) => a.name === b.name);
// [
// { name: 'John', age: 30 },
// { name: 'Jane', age: 28 },
// { name: 'Jack', age: 28 }
// ]
Резюме
Поздравляем! Вы завершили практическое занятие "Замена или добавление значения в массив". Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.