我正在Javascript中创建一个数组,其中产品ID用于键。由于键是数字,数组用 null 填充空白。
例如,如果我只有两个产品,它们的 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;
}
谢谢
为了迭代数组,您可以使用 Array#forEach
,它跳过稀疏项目。
var array = [];
array[5] = 'my first product';
array[7] = 'my second product';
array.forEach(function (a, i) {
console.log(i, a);
});
为了更好地组织,您可以使用一个对象,使用给定的 id 直接访问。
{
5: 'my first product',
7: 'my second product'
}
强制 javascript 键整数用 null 填充数组
您正在声明一个空数组,然后将值设置为数组中的第 6 和第 8 个元素。这会将其他元素的值保留为 null。
如果您不打算将项目push
数组中,即使用对象。像这样,
var obj = {};
obj[5] = "my first product";
obj[7] = "my second product";
这意味着创建的对象是:
obj = {"5":"我的第一个产品","7":"我的第二个产品"}
var arr = []
arr[5] = 'my first product';
arr[7] = 'my second product';
let result = arr.filter(ar => ar != null);
console.log(result);