【问题标题】:How can I insert each of an arrays elements every other element in another array? [duplicate]如何在另一个数组中每隔一个元素插入每个数组元素? [复制]
【发布时间】:2021-12-17 08:16:47
【问题描述】:

我有两个数组。

let a = [1, 3, 5, 7] let b = [2, 4, 6, 8]

我想要结果: a = [1, 2, 3, 4, 5, 6, 7, 8]

如何在数组 A 中每隔一个元素插入数组 B 的每个元素?

我尝试在 for 循环中使用 splice,但数组 A 的长度发生了变化,所以我无法让它工作。

【问题讨论】:

  • 请显示您尝试过的代码

标签: javascript


【解决方案1】:

如果数组长度相同,则可以使用平面映射来避免改变原始数组。

const a = [1, 3, 5, 7];
const b = [2, 4, 6, 8];

const res = b.flatMap((elem, index) => [a[index], elem]);

console.log(res);

【讨论】:

    【解决方案2】:

    你可以试试:

    let a = [1, 3, 5, 7];
    let b = [2, 4, 6, 8]
    let newArray = [...a, ...b]
    
    console.log(newArray) // [1, 3, 5, 7, 2, 4, 6, 8]
    

    如果你只想排序

    let a = [1, 3, 5, 7];
    let b = [2, 4, 6, 8]
    let newArray = [...a, ...b].sort((a, b) => a - b)
    
    console.log(newArray) // [1, 2, 3, 4, 5, 6, 7, 8]
    

    【讨论】:

      【解决方案3】:

      您可以转置数据并获得一个平面数组。

      const
          transpose = (a, b) => b.map((v, i) => [...(a[i] || []), v]),
          a = [1, 3, 5, 7],
          b = [2, 4, 6, 8],
          result = [a, b]
              .reduce(transpose, [])
              .flat();
      
      console.log(result);

      【讨论】:

        【解决方案4】:

        不要拼接,只需创建一个新数组并将它们推入每个其他索引。

        做一个for循环,在每个循环上做 newArrary.push(a[i]); newArrary.push(b[i]);

        【讨论】:

          【解决方案5】:

          您可以创建一个新数组,循环通过a 并将当前项和b 中的项推送到同一索引处:

          let a = [1, 3, 5, 7];
          let b = [2, 4, 6, 8];
          let res = []
          a.forEach((e,i) => res.push(e, b[i]))
          
          console.log(res)

          或者,您可以使用Array.mapArray.flat

          let a = [1, 3, 5, 7];
          let b = [2, 4, 6, 8];
          let res = a.map((e,i) => [e, b[i]]).flat()
          
          console.log(res)

          【讨论】:

            【解决方案6】:

            您可以使用reduce

            let a = [1, 3, 5, 7];
            let b = [2, 4, 6, 8];
            
            let c = a.reduce((acc, x, i) => acc.concat([x, b[i]]), []);
            
            console.log(c)

            这适用于任何长度的数组,根据不同长度的数组所需的结果调整代码。

            【讨论】:

              【解决方案7】:

              使用forEach 并从另一个数组中推送当前元素和相对元素是一种选择

              let a = [1, 3, 5, 7];
              let b = [2, 4, 6, 8];
              
              let c = [];
              a.forEach((x, i) => {c.push(x, b[i])});
              
              console.log(c);

              更多关于forEach - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

              【讨论】:

                【解决方案8】:

                创建一个新数组并通过执行以下操作将其展平。

                let a = [1, 3, 5, 7]
                let b = [2, 4, 6, 8]
                console.log(a.map((e, i)=> [e, b[i]]).flat());

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2015-08-15
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-03-20
                  • 2020-03-30
                  • 1970-01-01
                  • 2021-08-04
                  相关资源
                  最近更新 更多