#javascript
#javascript
Вопрос:
Если у меня есть этот массив ['Jan', 'March', 'April', 'June']
. Как заменить 'April'
на 'newVal'
и сохранить все остальные элементы без изменений. Я пытался
const months = ['Jan', 'March', 'April', 'June'];
months.splice(3, 1, 'newVal');
console.log(months);
Я хочу, чтобы он возвращал ['Jan', 'March', 'newVal', 'June']
но он возвращает ["Jan", "March", "April", "newVal"]
Комментарии:
1. месяцы[2] = «newVal»
2. Индекс массивов начинается с
0
. Таким образом, индекс должен быть2
3. что вы имеете в виду под » не касаясь «?
Ответ №1:
Почему бы не назначить напрямую?
const
months = ['Jan', 'March', 'April', 'June'];
months[2] = 'newVal';
console.log(months);
Ответ №2:
Ты можешь это сделать:
a.splice(2,1,"newVal")
Он удаляет 1 элемент в позиции 2 и добавляет новое значение «newVal»
Ответ №3:
Вы могли бы сначала найти Arrray.prototype.indexOf() некоторую «строку», чем вы можете напрямую заменить ее:
const arr = ["a", "b", "c", "d"];
const idx = arr.indexOf("c"); // 0..N or -1 if not found
// Make sure the index is found, than replace it
if (idx > -1) arr.splice(idx, 1, "newVal");
Отличная функция повторного использования:
const replaceInArray = (arr, oldVal, newVal) => {
const idx = arr.indexOf(oldVal);
if (idx > -1) arr.splice(idx, 1, newVal);
};
const months = ['Jan', 'March', 'April', 'June'];
replaceInArray(months, "April", "newVal");
console.log(months)
Ответ №4:
Если вы знаете значение, которое хотите заменить (т. Е. Вы всегда хотите заменить ‘April’) :
months[months.indexOf("April")] = 'newVal';
Ответ №5:
Всегда помните, что первый индекс массива всегда равен 0, поэтому просто сделайте это вместо :
months.splice(2,1,"newVal")
Ответ №6:
Функция, которую вы использовали, была правильной, но Вы ошибочно приняли значение индекса элемента april
массива months
Правильное значение индекса april равно 2
Итак, ваш код будет выглядеть следующим образом
const months = ['Jan', 'March', 'April', 'June'];
months.splice(2, 1, 'newVal');
console.log(months);