gpt4 book ai didi

javascript - 如果元素不是对象,则获取嵌套 JSON 对象的键名称和值

转载 作者:行者123 更新时间:2023-11-28 17:26:50 25 4
gpt4 key购买 nike

我有一个对象,其键我不知道,但结构基本相同。值可以是字符串或字符串/对象的另一个对象。这是一个例子:

d = {
"name": "Sam",
"grade": 9,
"classes": {
"a": 1,
"b": 2
},
"age": null
}

我现在想要的是,如果 value 不是另一个对象,则获取键名称及其值。如果值为 null,则返回空字符串。从上面的预期输出是:

name=Sam, grade=9, a=1, b=2, age=''

这里由于类是对象,因此必须再次循环以获取键(a,b)和值(1,2)。

我尝试了以下方法,但如果任何值为空,它会返回错误:

Cannot convert undefined or null to object

如果没有空值,效果很好:

function getKeyValues(data) {
var q = '';

f(data);

function f(s) {
Object.keys(s).forEach(function(key) {
if (typeof s[key] === 'object') {
f(s[key]);
} else {
q = q + key + '=' + (s[key] == null) ? "" : s[key] + '&';
}
});
}
return q;
}

d = {
"name": "Sam",
"grade": 9,
"classes": {
"a": 1,
"b": 2
},
"age": null
}

console.log(getKeyValues(d));

最佳答案

试试这个:

function getKeyValues(data) {
var q = [];
var keys = Object.keys(data);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var value = data[key];
if (value == null) {
q.push(key + "=''");
} else if (typeof value == "object") {
q.push(getKeyValues(value));
} else {
q.push(key + "=" + value);
}
}
return q.join(",");
}

关于javascript - 如果元素不是对象,则获取嵌套 JSON 对象的键名称和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51368281/

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