【问题标题】:How to paste array inside other array? [duplicate]如何将数组粘贴到其他数组中? [复制]
【发布时间】:2016-12-20 08:35:58
【问题描述】:

我有 2 个数组:

var str = ['a','b','c','d'];
var num = [1,2,3];

我想要一个这样的数组:

var strNum= ['a','b',1,2,3,'c','d'];

有办法吗?

【问题讨论】:

  • 您是否总是希望数字正好在中间?
  • 如果顺序不重要,可以使用concat
  • 并非总是如此,有时会将数字放在某个 [i] 索引之后。订单重要

标签: javascript arrays


【解决方案1】:

你可以使用Array#splice

splice() 方法通过删除现有元素和/或添加新元素来更改数组的内容。

Function.apply

apply() 方法调用具有给定this 值和arguments 作为数组(或array-like object)提供的函数。

var str = ['a', 'b', 'c', 'd'],
    num = [1, 2, 3],
    strNum = str.slice();

Array.prototype.splice.apply(strNum, [2, 0].concat(num));
console.log(strNum);

或者你可以使用 ES6 的 spread syntax ...

扩展语法允许在需要多个参数(用于函数调用)或多个元素(用于数组字面量)或多个变量(用于解构赋值)的地方扩展表达式。

var str = ['a', 'b', 'c', 'd'],
    num = [1, 2, 3],
    strNum = str.slice();

strNum.splice(2, 0, ...num);
console.log(strNum);

【讨论】:

    【解决方案2】:

    一种方法是使用splice 方法。 str.splice(index, 0, item);会在指定索引处将item插入str中(先删除0项,也就是插入)。

    splice() 方法通过删除现有元素和/或添加新元素来更改数组的内容。

    在此处查看更多信息:Array.splice

    请试试这个:

    var str = ['a','b','c','d'];
    var num = [1,2,3];
    for(i in num.reverse()){
      str.splice(2, 0, num[i]);
    }
    console.log(str);

    这是另一种方法:

    var str = ['a','b','c','d'];
    var num = [1,2,3];
    str=str.slice(0,2).concat(num).concat(str.slice(-2));
    console.log(str);

    【讨论】:

      【解决方案3】:

      你可能正在寻找这个:

      var str = ['a','b','c','d'];
      var num = [1,2,3];
      
      var startAt = 2;
      num.forEach((number, ind)=>{
          str.splice(startAt+ind, 0, number);
      });
      
      console.log(str);
      

      https://jsfiddle.net/qbkqspqq/

      【讨论】:

        【解决方案4】:

        改变现有值几乎总是一个坏主意。只需将您需要的东西连接在一起:

        var str = ['a','b','c','d'];
        var num = [1,2,3];
        
        var where = 2;
        var result = [].concat(
            str.slice(0, where), 
            num, 
            str.slice(where));
        
        console.log(result)

        【讨论】:

        • 我的回答不如这个
        • @Peachyz:是的,OP 似乎与 splice 的所有东西混淆了。
        【解决方案5】:

        您可以使用slice方法将str数组拆分为2:插入点之前的部分和之后的部分:

        var before = str.slice(0,2);
        var after = str.slice(2);
        

        然后您可以使用concat 方法创建strNum 数组,将beforenumafter 数组串联为一个:

        var strNum = before.concat(num).concat(after);
        

        var str = ['a','b','c','d'];
        var num = [1,2,3];
        
        var before = str.slice(0,2);
        var after = str.slice(2);
        
        var strNum = before.concat(num).concat(after);
        
        console.log(strNum);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多