在特定情况下将数据推送到数组中

问题描述

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

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

从web socket(number)接收数据后,例子number = 4,我想把这个数字压入Array 4的位置。

输出[null,null,4]

或者我不能输入除 null 之外的任何其他内容,例如:“-”

输出[-,-,4]

从网络套接字接收到第二个数据后,示例编号 = 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("-");
   }
}

解决方法

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

const number = 2,maxSize = 4;

const tArray = new Array(maxSize).fill('-');
tArray[number] = number;

console.log(tArray);

,

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

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)

,

这应该适合你:

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

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

,

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);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...