Arrays 即使在对象中存在另一个数组,如何获取数组键名?
我正在尝试获取新数组的数组键名称,即使数组中有另一个数组 到目前为止,我能够得到所有的键名,除了那些在一个级别以下的键名 我有一个现有阵列:Arrays 即使在对象中存在另一个数组,如何获取数组键名?,arrays,json,reactjs,Arrays,Json,Reactjs,我正在尝试获取新数组的数组键名称,即使数组中有另一个数组 到目前为止,我能够得到所有的键名,除了那些在一个级别以下的键名 我有一个现有阵列: searchResult = [ {"id":1, "name":"Duracell", "manufacturer":"Duracell", "model":"DC2400", "type": { "id":4,"type":"Nickel Metal Hydride","rechargeable":true
searchResult = [
{"id":1,
"name":"Duracell",
"manufacturer":"Duracell",
"model":"DC2400",
"type": {
"id":4,"type":"Nickel Metal Hydride","rechargeable":true
},
"size": {
"size":"AAA","shape":"Cylindrical"
},
"nominalCapacity":750,
"nominalVoltage":1,
"diameter":10,
"width":null,
"height":44,
"length":null,
"depth":null
},
{...},
{...}
]
我把它当作道具,并得到关键的名字:
const formFields = Object.keys(this.props.searchResult[0])
console.log(formFields)
console.log输出为:
["id",
"name",
"manufacturer",
"model",
"type",
"size",
"nominalCapacity",
"nominalVoltage",
"diameter",
"width",
"height",
"length",
"depth"]
它缺少以下内容:
"type": {
"id", "type", "rechargeable"
},
"size": {
"size","shape"
}
所以我希望它是这样的:
["id",
"name",
"manufacturer",
"model",
"type": {
"id", "type", "rechargeable"
},
"size": {
"size","shape"
},
"nominalCapacity",
"nominalVoltage",
"diameter",
"width",
"height",
"length",
"depth"]
更新
下面的注释包含我使用的代码:
const formFields = this.props.searchResult[0]
var keys = [];
for(var key in formFields) {
keys.push(key);
if(typeof formFields[key] === "object") {
var subkeys = getDeepKeys(formFields[key]);
keys = keys.concat(subkeys.map(function(subkey) {
return key + "." + subkey;
}));
}
}
console.log(keys)
console.log输出为:
["id", "name", "manufacturer", "model", "type", "size", "nominalCapacity", "nominalVoltage", "diameter", "width", "height", "length", "depth"]
仍然不是预期的那样。完全相同的结果@NikKyriakides评论解决了所有问题。答案是这个问题:
可能是@NikKyriakides的复制品,请检查一下,看看是否对我有好处。标题有点不一样,为什么你能找到它,谢谢。你需要使用递归。我想你可以修改这个被接受的答案。我一直在回复[0,1,2,3,4…有什么想法吗?@NikKyriakides。过了一会儿我又检查了一遍,是的,它起作用了。我修改错了。谢谢。