#javascript #arrays
#javascript #массивы
Вопрос:
Я пытаюсь обратить строку и применить метод join() к обратному содержимому в JavaScript. Объединение работает должным образом, когда я использую «-» или любой другой символ в методе join(). Но когда я использую только («») или («» «) , он просто присоединяется к исходному массиву, а не к обратному. Пожалуйста, помогите мне понять фактическое поведение.
Рассмотрим приведенный ниже код.
var a = [1,2,3]; //actual array
console.log(a.reverse().join("-")); // working as expected. output: "3-2-1"
console.log(a.reverse().join("")); //not working as expected. output:"123"
Спасибо,
Dhinesh
Комментарии:
1. Как написано в документации developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… «Обращение является разрушительным. Это также изменяет исходный массив.»
2. просто добавляю к первому комментарию… Итак, вы дважды перевернули свой массив… чтобы это выглядело так, как будто второе
a.reverse()
не работало должным образом, в то время как оно перевернуло уже перевернутый массив
Ответ №1:
Обращение изменяет исходный массив
Метод reverse() возвращает массив на место. Первый элемент массива становится последним, а последний элемент массива становится первым.
В этом случае вы можете сделать неглубокую копию, а затем использовать reverse
var a = [1,2,3]; //actual array
console.log([...a].reverse().join("-")); // working as expected. output: "3-2-1"
console.log([...a].reverse().join(""));
Комментарии:
1.
a.slice().reverse()
я думаю, что лучше, чем создавать мелкую копию.2. @MaheerAli, который делает то же самое, только срез
Ответ №2:
reverse
измените элементы в исходном массиве на обратные.
Обратный метод транспонирует элементы вызывающего объекта array на место, изменяя массив и возвращая ссылку на массив.
var a = [1,2,3]; //actual array
console.log(a.reverse().join("-")); // working as expected. output: "3-2-1"
console.log(a.join("")); //working as expected. output:"321"
Ответ №3:
Это всего лишь проблема работы с одним и тем же массивом и выполнения двух обратных операций. Давайте попробуем сделать это:
var a = [1,2,3];
const reversedArr = a.reverse();
console.log(reversedArr.join("-"));
console.log(reversedArr.join(""));