我有这个JSON对象:
{
"foo" : {
"58eedc4298d1712b870c8e0a" : false,
"58eedc4298d1712b870c8e06" : true,
"58eedc4198d1712b870c8e05" : true
},
"bar" : {
"58eedc4298d1712b870c8e0a" : "git",
"58eedc4298d1712b870c8e06" : "svn",
"58eedc4198d1712b870c8e05" : "hg"
},
}
我想得到一个看起来像这样的对象:
{
git: false,
svn: true,
hg: true
}
我提出的每个算法都非常冗长,任何人都会想到快速而聪明的东西?
答案 0 :(得分:3)
var newObj = {};
for (let property in obj.bar) {
if obj.bar.hasOwnProperty(property){
newObj[obj.bar[property]] = obj.foo[property];
}
}
我真的不是一个js dev,但这是我要开始的地方。
上面的代码是在没有任何语法检查的情况下编写的。我不知道它是否真的会编译。
答案 1 :(得分:1)
如果你正在使用lodash(如果不是你应该),你可以按照以下方式进行。
var _ = require("lodash");
var data = {
"foo": {
"58eedc4298d1712b870c8e0a": false,
"58eedc4298d1712b870c8e06": true,
"58eedc4198d1712b870c8e05": true
},
"bar": {
"58eedc4298d1712b870c8e0a": "git",
"58eedc4298d1712b870c8e06": "svn",
"58eedc4198d1712b870c8e05": "hg",
"58eedc4198d1712b870c8e06": "fa"
},
}
var keys = _.keys(data.bar);
var result = {};
_.forEach(keys, function (key) {
result[data.bar[key]] = data.foo[key] ? data.foo[key] : false;
});
console.log(result);