Путаница с массивом JavaScript.splice()
Я действительно смущен по этому поводу.
Я понимаю, что array.splice(startIndex, deleteLength, insertThing)
вставил бы insertThing
в результате splice()
в startIndex
и удалить deleteLength
стоит записей? ... так:
var a = [1,2,3,4,5];
var b = a.splice(1, 0, 'foo');
console.log(b);
Должен дать мне:
[1,'foo',2,3,4,5]
А также
console.log([1,2,3,4,5].splice(2, 0, 'foo'));
должен дать мне
[1,2,'foo',3,4,5]
и т.п.
Но по какой-то причине он дает мне просто пустой массив? Посмотрите: http://jsfiddle.net/trolleymusic/STmbp/3/
Спасибо:)
4 ответа
Функция "splice()" возвращает не затронутый массив, а массив удаленных элементов. Если вы ничего не удалите, результирующий массив будет пустым.
splice()
изменяет исходный массив и возвращает массив удаленных элементов. Поскольку вы не просили удалить какие-либо элементы, вы получаете пустой массив. Он изменяет исходный массив для вставки новых элементов. Вы смотрели, чтобы увидеть, что это было? Ищите свой результат в a
,
var a = [1,2,3,4,5];
var b = a.splice(1, 0, 'foo');
console.log(a); // [1,'foo',2,3,4,5]
console.log(b); // []
В выводе вашего jsFiddle, посмотрите результат в a
здесь: http://jsfiddle.net/jfriend00/9cHre/.
array.splice
Функция склеивает массив возвращает элементы, которые были удалены. Поскольку вы ничего не удаляете и просто используете для вставки элемента, он вернет пустой массив.
Я думаю, что это то, что вы хотите.
var a = [1,2,3,4,5];
a.splice(1, 0, 'foo');
var b = a;
console.log(b);
У меня была эта проблема. «Метод splice () изменяет содержимое массива, удаляя или заменяя существующие элементы и / или добавляя новые элементы на место». https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
Это будет работать:
var a = [1,2,3,4,5];
a.splice(1,0,'Foo');
console.log(a);
Если вы хотите, чтобы это было внутри функции, вы можете сделать это:
function placeInMiddle(arr){
arr.splice(2,0, "foo");
return arr;
}
placeInMiddle([1,2,6,7])
Страница Array.prototype.splice() разработчика Mozilla более ясна, чем другие ресурсы, о том, как работает метод сращивания и как его можно реализовать, кратко описанное ниже!
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]