我正在尝试生成一个由old_array[0] + old_array2.slice(1)
除非我从old_array[0]
创建第3个临时数组,否则我无法看到concat如何帮助我。
这是唯一的方法吗?
答案 0 :(得分:1)
var a = [1,2,3];
var b = [4,5,6];
根据您想要的结果,您有两个选项。之一:
var c = a.slice(1).concat(b[0]);
或者:
var c = [b[0]].concat(a.slice(1));
答案 1 :(得分:1)
您正在寻找的函数是array.unshift()
,它会在数组的开头添加一个或多个值:
var fruits = [ "orange", "banana" ];
fruits.unshift("apple");
// Fruits is now ["apple", "orange", "banana"]
如果要生成新数组,可以对切片的结果执行此操作:
var new_array = old_array2.slice(1);
new_array.unshift(old_array[0]);
但是,由于此代码只是替换了第一个元素,您还可以编写:
var new_array = old_array2.slice(0);
new_array[0] = old_array[0]; // I prefer this for readability
我不确定你问题中的slice(1)
,因为我觉得它不符合你问题的措辞。所以,这里有两个答案:
如果要创建一个与old_array2相同的新数组,但使用old_array的第一个值,请使用:
var new_array = old_array2.slice(0); // Note the slice(0)
new_array.unshift(old_array[0]);
如果要创建一个与old_array2相同的新数组,但第一个值替换为old_array的第一个值,请使用:
var new_array = old_array2.slice(0);
new_array[0] = old_array[0];
答案 2 :(得分:0)
如果你只想从两个源数组的那些显式定义的部分中获得一个新的双元素数组,那么就这样做:
new_array = [old_array[0], old_array2.slice(1).toString()];
请参阅:jsfiddle
(注意:根据收到的评论,从最初提出的解决方案中修复了第二个元素。)