1

我正在尝试生成一个由old_array[0] + old_array2.slice(1)

我看不到 concat 在这里对我有什么帮助,除非我从old_array[0].

这是唯一的方法吗?

4

3 回答 3

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));
于 2013-08-25T01:34:44.783 回答
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]; 
    
于 2013-08-25T01:37:38.813 回答
0

如果您只是想从两个源数组的那些显式定义的部分中获得一个新的二元素数组,那么只需执行以下操作:

new_array = [old_array[0], old_array2.slice(1).toString()];

参见:jsfiddle

(注意:根据收到的评论,从最初提出的解决方案中修复了第二个元素。)

于 2013-08-25T01:45:11.443 回答