#javascript #arrays #sorting
#javascript #массивы #сортировка
Вопрос:
Я работаю над своим API. На этом этапе я хочу заменить первый объект массива, такой как:
Если заданные данные:
const data = ["1", 2, 3, 4, 5, 6]
тогда я хочу:
ВЫВОД В ВИДЕ:
["New_text", 2, 3, 4, 5]
Для этого я попробовал функцию .splice:
const new_data = data.splice(0, 1, "New_text")
Но я получаю [«1»] в качестве вывода. Как я могу это сделать?
Комментарии:
1. вам нужен новый массив?
2.
Array.splice
возвращаемое значение — «Массив, содержащий удаленные элементы»,data
модифицируется на месте.3. все в порядке, просто удалите последний элемент данных
4. @Nick Я знал, где я был неправ, из-за вашего комментария. Спасибо. Я просто понимаю, что мне нужно console.log(данные).
5. Почему бы просто не сделать
data[0] = "New_text"
Ответ №1:
splice
метод возвращает новый массив удаленных элементов. Это также изменяет исходный массив
Попробуйте
const data = ['1', 2, 3, 4, 5, 6];
data.splice(0, 1);
data.unshift('New_text');
console.log(data);
Комментарии:
1. Вам нужно добавить
data.pop()
передconsole.log
2. Не
data[0] = "New_text"
ли это проще, чем использовать 2 метода расширения массива?
Ответ №2:
Он работает правильно, но вы неправильно понимаете, как это работает:
const deleted_data = data.splice(0, 1, "New_text");
console.log(deleted_data); // [1]
console.log(data); // ["New_text", 2, 3, 4, 5, 6]
// ^
// |
// NOTE: "data" itself is modified by splice
Если вы действительно хотите настаивать на том, чтобы добавленные данные были частью нового массива, вам нужно вручную скопировать старый массив в новый массив:
const new_data = data.slice(); // copy old array
new_data.splice(0, 1, "New_text");
// ^
// |
// NOTE: new_data, not data !
Ответ №3:
метод splice отлично работает для вас. но если задача состоит только в том, чтобы изменить первый элемент в массиве, вы на самом деле вместо splice можете использовать это
const data = ["1", 2, 3, 4, 5, 6]
data.shift()
data.unshift("New_text")
// or just
data[0] = "New_text"
Ответ №4:
splice создает новый массив, состоящий ТОЛЬКО из элементов, которые вы удалили.
вам нужно поместить новый ‘New_text’ в исходный массив после использования splice,
попробуйте метод unshift, чтобы поместить ‘New_text’ в качестве первого элемента.