Javascript中是否存在通过Java实现的this以下功能的等价物?
能够在不知道JSON格式的情况下迭代简单到复杂/嵌套的JSON结构。
我需要这个功能来获取所有最里面的键,并且保存直接值而不是对象/数组作为其值。
在此fiddle中,Object.keys()仅提供最外层的键。我希望能够得到(id,type)
console.log(Object.keys(x));
答案 0 :(得分:1)
你可以自己构建它,只要递归地迭代对象的键,如果它是一个对象,请看这个小例子:
const getAllPropertiesRecursively = (obj) => {
const propertyKeys = [];
Object.keys(obj).forEach(key => {
const value = obj[key];
if (value && !Array.isArray(value)) {
if (value.toString() === '[object Object]') {
propertyKeys.push(...getAllPropertiesRecursively(value));
} else {
propertyKeys.push({[key]: value}); // here you store the keys and values that are not array nor object
}
}
});
return propertyKeys;
}
所以当你这样调用这个方法时:
getAllPropertiesRecursively({a:1, b:2, c: { d: 1}, e: [1,2,3,4], f: {g:2}});
你得到一个像:
这样的数组 [{a: 1}, {b: 2}, {d: 1}, {g: 2}]
您可以使用注释编辑该行,以便按照您希望的方式存储数据