gpt4 book ai didi

javascript - 检查数组位置是否真的未定义

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:45:36 27 4
gpt4 key购买 nike

我正在尝试检查 JSON.stringify(obj, callback) 的回调中给出的值是否真的未定义。问题在于数组值尚未定义。

var a = new Array(3);
a[0] = true;
a[2] = undefined;

a.length; // 3
a.hasOwnProperty(0); // true
a.hasOwnProperty(1); // false
a.hasOwnProperty(2); // true
a.hasOwnProperty(3); // false
(a[1] === a[2]) // true

有什么想法可以检测位置 [1] 是否已定义?因为数组有 3 个元素用于 JSON.stringify 算法。

最佳答案

找出数组中已分配(不一定是已定义)索引的一种方法是迭代器函数,如 forEach,它会忽略空值插槽:

var a = new Array(3);
a[0] = true;
a[2] = undefined;


defined = []
a.forEach(function(_, n) { defined.push(n) })
alert(defined)

因此,您可以使用虚拟迭代器仅返回分配的项目:

a = []
a[1] = 11
a[2] = 22
a[3] = undefined
a[5] = 55
a[99] = 99
s = JSON.stringify(a, function(key, value) {
if(Array.isArray(value))
return value.filter(function() { return 1 });
return value;
});

alert(s)

关于javascript - 检查数组位置是否真的未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28366317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com