问题描述
我正在尝试使用特定索引将数据推送到数组中。
从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);