用数组中的零值替换空

DIL*_*MAS 4 javascript

我有一个数组 as ,我需要删除空值并用零替换它。

我已经做到了这么多。当我检查数组长度为 8 时,它只显示 2 个元素。用零替换它的最佳方法是什么。

var a = [];

a[3] = 5

a[5] = 15

console.log(a.length) // 6

console.log(a) // [empty,empty,empty,5,empty,15] 

how can i make the output as [0,0,0,5,0,15]
Run Code Online (Sandbox Code Playgroud)

// 试过这种方法没有用

a.map(o => o !== null ? o : 0)
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 8

一种方法是使用Array.from,它遍历length数组从 0 到 的每个元素(不像map,它只遍历数组中实际存在的属性)

var a = [];
a[3] = 5
a[5] = 15

a = Array.from(a, item => item || 0);
console.log(a);
Run Code Online (Sandbox Code Playgroud)

如果数组中可能存在不希望被替换为 0 的非零假值,则可以进行typeof检查:

var a = [];
a[3] = 5
a[2] = null;
a[5] = 15

a = Array.from(a, item => typeof item === 'undefined' ? 0 : item);
console.log(a);
Run Code Online (Sandbox Code Playgroud)

  • ...`map` 不起作用,因为它只迭代现有属性,而 `Array.from` 迭代所有属性 (2认同)