如何将所有对象属性转换为字符串,就像路径一样?
E.g。
{a:{s:"asd",g:"asd"}, b:2}
输出:
["a.s",
"a.g",
"b"]
是否存在能够执行此类操作的功能?
答案 0 :(得分:3)
Node中没有内置,但递归写入并不困难:
function descendants(obj) {
return Object.keys(obj).map(function (key) {
var value = obj[key];
// So as to not include 'a'; a bit of a hack.
// You might need better criteria.
if (typeof value === 'object') {
return descendants(value).map(function (desc) {
return key + '.' + desc;
});
}
return [key];
}).reduce(function (a, b) {
return a.concat(b);
});
}