【发布时间】:2014-08-19 17:10:00
【问题描述】:
假设我有两个数组:
var numbers = [1,3,5,7,9,11];
var letters = ['a','b','c'];
假设我还有另一个对 numbers 数组的引用:
var anotherRef = numbers;
我想以修改现有数组的方式将一个插入另一个,以便在操作后anotherRef === numbers。
如果我不需要维护原始数组,我会这样做:
function insert(target, source, position) {
return target.slice(0, position).concat(source, target.slice(position));
}
问题是,用这种方法插入后,两个引用指向不同的数组:
numbers = insert(numbers, letters, 3);
numbers !== anotherRef; // sadly, true.
如果我要添加到数组的末尾,我可以这样做,这有点巧妙:
function insertAtEnd(target, source) {
Array.prototype.push.apply(target, source);
}
有没有很好的方法在 JS 数组中插入多个值?
【问题讨论】:
-
我被第一位搞糊涂了:“手术后,
anotherRef === numbers”。这不是 before 任何操作的情况吗?由于它们指向同一个数组,因此对任何一个执行的任何操作都将由任一引用反映 -
你可能想看看
Array.splice()developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。 -
@AndrewWhitaker,是的,以前是这样,我也需要以后也是这样。问题是 concat 返回一个新数组,切片也是如此。
splice没有,但它不处理数组中的多个参数。
标签: javascript arrays