强制javascript键整数填充数组为null

时间:2017-10-17 09:58:57

标签: javascript arrays null

我在Javascript中创建一个数组,其中产品ID用于密钥。由于键是数字,因此数组填充空位。

例如,如果我只有两个产品且它们的ID为5和7,我会做类似的事情:

var arr = []
arr[5] = 'my first product';
arr[7] = 'my second product';

然后将此数组传递给PHP脚本,但在打印数组时,我得到以下内容;

Array (
    [0] = null
    [1] = null
    [2] = null
    [3] = null
    [4] = null
    [5] = My first product
    [6] = null
    [7] = My second product
)

我的ID号实际上是6位数字,所以当循环遍历数组时,有100,000次迭代,即使我实际上只有两个产品。

如何创建数组以便不输入空值?我想把密钥改成字符串,但是当数组是动态构建时,我不知道该怎么做。

var arr = [];
for(var i=0; i<products.length; i++)
{
    array[products[i].id] = products[i].name;
}

由于

3 个答案:

答案 0 :(得分:1)

对于迭代数组,您可以使用Array#forEach来跳过稀疏项。

&#13;
&#13;
var array = [];

array[5] = 'my first product';
array[7] = 'my second product';

array.forEach(function (a, i) {
    console.log(i, a);
});
&#13;
&#13;
&#13;

为了更好地组织,您可以使用具有给定ID的直接访问的对象。

{ 
    5: 'my first product',
    7: 'my second product'
}

答案 1 :(得分:0)

  

强制javascript键整数填充数组为null

您声明一个空数组,然后将值设置为数组中的第6个和第8个元素。这使得其他元素的值为null。

如果您不打算将push项目打包到数组中,即使用对象。像,

var obj = {};
obj[5] = "my first product";
obj[7] = "my second product";

这意味着创建的对象是:

  

obj = {&#34; 5&#34;:&#34;我的第一个产品&#34;,&#34; 7&#34;:&#34;我的第二个产品&#34;}

答案 2 :(得分:0)

var arr = []
arr[5] = 'my first product';
arr[7] = 'my second product';
let result = arr.filter(ar => ar  != null);
console.log(result);