说我有两个数组:
var numbers = [1,3,5,7,9,11];
var letters = ['a','b','c'];
并说我有另一个数字数组的引用:
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数组中插入多个值?
答案 0 :(得分:2)
您好像正在寻找splice
方法:
function insert(target, source, position) {
Array.prototype.splice.apply(target, [position, 0].concat(source));
return target;
}
var numbers = [1,3,5,7,9,11];
var letters = ['a','b','c'];
insert(numbers, letters, 3);
console.log(numbers);
>> [1, 3, 5, "a", "b", "c", 7, 9, 11]
答案 1 :(得分:1)
工作示例:http://jsfiddle.net/0mwun0ou/1/
function insert(target, source, position) {
Array.prototype.splice.apply(target, [position,0].concat(source));
}
var numbers = [1,3,5,7,9,11];
var letters = ['a','b','c'];
var anotherRef = numbers
insert(numbers, letters, 1)
console.log(anotherRef)
我从未接触anotherRef
,但在该示例中输出为:
[1, "a", "b", "c", 3, 5, 7, 9, 11]
有关如何使用数组作为拼接检查的第三个参数的说明:Is there a way to use Array.splice in javascript with the third parameter as an array?