我创建一个数组let arr = new Array(99999),但我不填满它来arr.length是99999,我怎么能知道有多少实际的,非undefined元素我有此数组中?
有没有比寻找第一个更好的方法undefined?
您可以使用Array#forEach,跳过稀疏元素.
let array = new Array(99999),
count = 0;
array[30] = undefined;
array.forEach(_ => count++);
console.log(count);Run Code Online (Sandbox Code Playgroud)
同样的 Array#reduce
let array = new Array(99999),
count = 0;
array[30] = undefined;
count = array.reduce(c => c + 1, 0);
console.log(count);Run Code Online (Sandbox Code Playgroud)
对于过滤非稀疏/密集元素,您可以使用为每个元素返回的回调true.
也许这个链接有助于理解稀疏数组的机制:JavaScript:稀疏数组与密集数组.
let array = new Array(99999),
nonsparsed;
array[30] = undefined;
nonsparsed = array.filter(_ => true);
console.log(nonsparsed);
console.log(nonsparsed.length);Run Code Online (Sandbox Code Playgroud)
筛选数组中项目的最快,最简单的方法是...使用 .filter()函数,仅筛选有效的元素(在您的情况下未定义),然后检查.length结果。 。
function isValid(value) {
return value != undefined;
}
var arr = [12, undefined, "blabla", ,true, 44];
var filtered = arr.filter(isValid);
console.log(filtered); // [12, "blabla", true, 44]Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
679 次 |
| 最近记录: |