【问题标题】:How to insert multiple elements into the same index in a multidimensional array?如何将多个元素插入多维数组的同一索引中?
【发布时间】:2019-04-09 12:04:06
【问题描述】:

我有两个要在 GAS 中组合的数组,arr2 是多维的。

arr1 = ["Diesel", "Solar", "Biomass"]

arr2 = [
        ["ABC", "Nigeria", "Diesel,Solar", 35],
        ["DEF", "Egypt", "Solar,Diesel", 50],
        ["GHI", "Ghana", "Biomass,Diesel", 70]
       ]

我想要做的是将 arr1 的元素推入 arr2 的每行索引 3 处,所以它看起来像:

newArr = [
          ["ABC", "Nigeria", "Diesel,Solar", "Diesel", 35],
          ["DEF", "Egypt", "Solar,Diesel", "Solar", 50],
          ["GHI", "Ghana", "Biomass,Diesel", "Biomass", 70]
         ]

我尝试在 arr2 上使用 .map 来 .Splice 每一行,但无法正常工作。任何帮助将不胜感激!

【问题讨论】:

标签: javascript arrays google-apps-script


【解决方案1】:

使用array.splice()array.map()

语法

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

let arr1 = ["Diesel", "Solar", "Biomass"]

let arr2 = [
  ["ABC", "Nigeria", "Diesel,Solar", 35],
  ["DEF", "Egypt", "Solar,Diesel", 50],
  ["GHI", "Ghana", "Biomass,Diesel", 70]
]

let newArr = arr2.map((v, i) => v.splice(3, 0, arr1[i]) && v)

console.log(newArr)

【讨论】:

    【解决方案2】:

    您可以使用Array#mapArray#splice 方法。

    let arr1 = ["Diesel", "Solar", "Biomass"],
      arr2 = [
        ["ABC", "Nigeria", "Diesel,Solar", 35],
        ["DEF", "Egypt", "Solar,Diesel", 50],
        ["GHI", "Ghana", "Biomass,Diesel", 70]
      ];
    
    // iterate over the array
    let res = arr2.map((arr, i) => {
    // copy array values to a new array
      let newA = [...arr];
      // insert new element into array based on index
      newA.splice(3, 0, arr1[i]);
      // return new array
      return newA;
    })
    
    console.log(res)

    如果你想改变原始数组,那么你可以跳过数组复制部分,只需Array#splice 方法就足够了。

    let arr1 = ["Diesel", "Solar", "Biomass"],
      arr2 = [
        ["ABC", "Nigeria", "Diesel,Solar", 35],
        ["DEF", "Egypt", "Solar,Diesel", 50],
        ["GHI", "Ghana", "Biomass,Diesel", 70]
      ];
    
    // iterate over the array and put the value at specific index
    arr2.forEach((arr, i) => arr.splice(3, 0, arr1[i]))
    
    console.log(arr2)

    【讨论】:

      【解决方案3】:

      试试下面的代码

      arr1 = ["Diesel", "Solar", "Biomass"]
      
      arr2 = [
              ["ABC", "Nigeria", "Diesel,Solar", 35],
              ["DEF", "Egypt", "Solar,Diesel", 50],
              ["GHI", "Ghana", "Biomass,Diesel", 70]
             ]
      arr2.forEach((subArr, index) => {console.log(subArr.splice(3, 0, arr1[index]));});
      console.log(arr2);
      

      【讨论】:

        【解决方案4】:

        使用forEach。如果您不想改变数组,请使用map

        const arr1 = ['Diesel', 'Solar', 'Biomass'];
        
        const arr2 = [
          ['ABC', 'Nigeria', 'Diesel,Solar', 35],
          ['DEF', 'Egypt', 'Solar,Diesel', 50],
          ['GHI', 'Ghana', 'Biomass,Diesel', 70]
        ];
        
        arr2.forEach((el, i) => {
          el.splice(3, 0, arr1[i]);
        });
        
        console.log(arr2);

        【讨论】:

          猜你喜欢
          • 2012-07-21
          • 2012-10-18
          • 2019-12-03
          • 2021-10-04
          • 2017-03-25
          • 1970-01-01
          • 2016-01-20
          • 2021-08-27
          • 1970-01-01
          相关资源
          最近更新 更多