【问题标题】:Push data in array in specific case在特定情况下将数据推送到数组中
【发布时间】:2021-09-07 18:00:07
【问题描述】:

我正在尝试以特定索引将数据推送到数组中。

起初,我有一个空数组:[]

从网络套接字(数字)接收数据后,例如数字= 4,我想将此数字推入位置4的数组中。

输出:[null,null,null,null,4]

或者我不能放任何其他东西,比如:“-”

新输出:[-,-,-,-,4]

从 web socket 接收到第二个数据后,example number = 2.

新输出:[-,-,2,-,4]

我试过这个:

let tArray = [];
for(let i=0; i<number + 1; i++){
   if(i == number){
      tArray[i].push(number);
   }
   if(!tArray[i]){
      tArray[i].push("-");
   }
}

【问题讨论】:

  • tArray 应该用 const let 或 var 声明
  • 另外,您不应该推送到特定位置,因为您不是在处理二维数组
  • 我尝试在特定位置推送,但每次推送时都会输出:[] null。 @MauriceNino
  • push() 用于在数组末尾添加一个值。 tArray[i] 不是一个数组,所以你不能给它push() 一个值。要将特定索引设置为特定值,请使用 tArray[i] = value
  • @3limin4t0r 感谢您提供此信息!

标签: javascript arrays push


【解决方案1】:

Concat 当前数组(tArray) 与 new Array 长度等于:

您的号码(和职位) - 当前array length + 1

这有 仅当当前数组(tArray) 不够大时才会发生

var tArray = [];
var pushIntoTarray = function (number) {
    if (tArray.length < number) {
        tArray = tArray.concat(new Array(number - tArray.length + 1).fill("-"));
    }
    tArray[number] = number;
    console.log(tArray);
}
pushIntoTarray(4);
pushIntoTarray(2);
pushIntoTarray(1);
pushIntoTarray(10);

【讨论】:

    【解决方案2】:

    这应该适合你:

    const tArray = [];
    if (tArray.length < number+1) {
      while (tArray.length < number+1) {
        tArray.push('-');
      }
    }
    tArray[number] = number;
    

    如果您更改tArray.push() 中的tArray[i].push() 部分,您的代码也应该没问题。

    【讨论】:

      【解决方案3】:

      创建一个预定义大小的数组,然后将数据放入数组中

      let data = 4;
      let size = 10; // as much as you like
      
      let array = new Array(size).fill('-');
      
      // now when the data comes from the web socket you can simply put inside the array
      
      array[data - 1] = data;
      console.log(array)

      【讨论】:

        【解决方案4】:

        您可以创建一个所需大小的数组,用"-" 填充它,然后在您的特定位置设置数字:

        const number = 2, maxSize = 4;
        
        const tArray = new Array(maxSize).fill('-');
        tArray[number] = number;
        
        console.log(tArray);

        【讨论】:

        • 如您所见,数字被推送到索引 3 而不是索引 2
        • @AmAnKumAr 让我们数:0、1、2、3。不,我很确定它在索引 2 处。也感谢您基本上复制我的答案哈哈。
        • 不,它被推送到索引 3 并且在我的代码中测试后在多种情况下工作得很好!谢谢@AmAnKumAr
        猜你喜欢
        • 2018-08-06
        • 2017-03-16
        • 2014-04-10
        • 1970-01-01
        • 2018-11-16
        • 1970-01-01
        • 1970-01-01
        • 2019-01-28
        • 1970-01-01
        相关资源
        最近更新 更多