【问题标题】:Add item to specific position otherwise push zero in array in javascript将项目添加到特定位置,否则在javascript中的数组中推零
【发布时间】:2019-10-14 16:28:11
【问题描述】:

我有一个空数组,我想在特定位置添加来自 web api 的特定项目,并希望使用 javscript 动态地将零(0)添加到剩余位置。 这是我的代码:-

let arraydata = [0, 0, 0, 0, 0,0,0,0,0,0,0,0]
arraydata.splice(5, 0, 4)
document.querySelector("#app").innerHTML = arraydata;

My Code

现在我已经手动添加了零,我想添加 0 到 12 个索引,并想在第 5 位同步添加 4。

【问题讨论】:

  • 究竟你的问题是什么,填充数组,拼接部分,或者通过拼接改变长度?
  • 我有 12 个索引数组,我在其中获取不同位置的值,我必须动态插入,否则剩余索引将为零,这就是我想要这个功能的原因

标签: javascript html arrays typescript ecmascript-6


【解决方案1】:

使用map:

let arraydata = Array(12).fill();
arraydata.splice(5, 0, 4);
arraydata = arraydata.map(e => e ? e : 0);
console.log(arraydata);

您还可以添加不同的值 - 只需将它们放在 fill 中:

let arraydata = Array(12).fill("Things");
arraydata.splice(5, 0, 4);
arraydata = arraydata.map(e => e ? e : 0);
console.log(arraydata);

【讨论】:

    【解决方案2】:

    你可以只在想要的索引处分配值而不用拼接,这会增加数组的长度。

    let arraydata = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
    arraydata[5] = 4;
    
    console.log(...arraydata);

    如果你想保持拼接,你可以通过分配想要的长度来保持长度。

    let arraydata = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
    arraydata.splice(5, 0, 4);
    arraydata.length = 12;
    
    console.log(...arraydata);

    【讨论】:

      【解决方案3】:

      使用Array.fill

      let array = new Array(12).fill(0);
      array.splice(5,0,4);
      console.log(array);

      如果您想更新索引而不是在特定索引处添加新值而不是拼接,您应该简单地执行array[5] = 4

      【讨论】:

        【解决方案4】:

        您可以将fill() 数组与0 结合使用

        let arraydata = Array(12).fill(0)
        arraydata.splice(5, 0, 4)
        console.log(arraydata)

        【讨论】:

          【解决方案5】:

          你可以像这样构建一个通用函数

          let desiredArr = (length, value, from, to)=>{
            let arr = new Array(length).fill(0)
            arr.splice(value, from, to)
            return arr
          }
          
          console.log(desiredArr(12, 5, 0 ,4))

          如果您始终只想更新一个索引,那么您可以简单地执行此操作

          let arr = new Array(12).fill(0)
          arr[5] = 4
          
          console.log(arr)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-04-19
            • 1970-01-01
            • 1970-01-01
            • 2018-04-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多