我在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;
}
由于
答案 0 :(得分:1)
对于迭代数组,您可以使用Array#forEach
来跳过稀疏项。
var array = [];
array[5] = 'my first product';
array[7] = 'my second product';
array.forEach(function (a, i) {
console.log(i, a);
});
&#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);