gpt4 book ai didi

javascript - 我在我的递归 javascript 函数中做错了什么?

转载 作者:行者123 更新时间:2023-11-29 22:20:04 27 4
gpt4 key购买 nike

我正在尝试创建一个递归函数来过滤对象,具体取决于第二个传递参数中的属性。

过滤效果很好,但我的数组被替换为空对象。我可以做些什么来避免这种情况发生?

var filter = function(obj, fields) {
var key, o;

if (typeof obj !== "object") { return obj;}
o = {};
for (key in obj) {
if (fields[key]) {
o[key] = filter(obj[key], fields[key]);
}
}
return o;
};


data = {name: "John Doe", followers: [], notAllowedProp: false}
allowedFields = {name: true, followers: true}

console.log(filter(data, allowedFields));
// => Object { name: "John Doe", followers: {}}

最佳答案

在控制台上试试这个:

> typeof []
"object"

要更可靠地检查数组,您可以使用 Object.prototype.toString:

> Object.prototype.toString.call([])
"[object Array]"

Object.prototype.toString 对所有 native 对象都有明确定义的行为,并且非常可靠。因此,例如,如果您想返回任何不是“真实”对象的东西,您可以这样写:

if (Object.prototype.toString(obj) !== "[object Object]") {
return obj;
}

关于javascript - 我在我的递归 javascript 函数中做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12919908/

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