提取所有值中的对象
的JS数组一个键我有对象提取所有值中的对象
{ "images":{
"1":{
"image_data":{
"votable":true,
"hashed_filename":"d66f00cf58c4fbbbc9703efff9c7694c"
},
"image_reference":1
},
"2":{
"image_data":{
"votable":true,
"hashed_filename":"5485a21d47e3815cd7f23d5f8a8c8677"
},
"image_reference":2
},
"3":{
"image_data":{
"votable":true,
"hashed_filename":"4df10b887f12d65f2f541c99f0dd1ef8"
},
"image_reference":3
}
}
}
的JSON集合有一个简单的方法来提取由下划线分隔的字符串值hashed_filename?
我需要一个像d66f00cf58c4fbbbc9703efff9c7694c_5485a21d47e3815cd7f23d5f8a8c8677_4df10b887f12d65f2f541c99f0dd1ef8
回答:
是一个结果。以对象的形式获取对象的所有值,从数组中的每个对象获取image_data.hashed_filename
,然后将所有值与_
连接。
Object.values(obj.images).map(x => x.image_data.hashed_filename).join('_')
但也有值的顺序不能保证在评估Object.values(obj.images)
为对象在JS无序。
要按键排序,请从对象中获取键,对键进行排序,获取每个键的值。然后映射到image_data.hashed_filename
并加入(与以前相同)。
Object.keys(obj.images).sort().map(x => obj.images[x]) .map(x => x.image_data.hashed_filename).join('_')
回答:
是的,那是可能的。你可以做这样的事情:
var o = { "images":{
"1":{
"image_data":{
"votable":true,
"hashed_filename":"d66f00cf58c4fbbbc9703efff9c7694c"
},
"image_reference":1
},
"2":{
"image_data":{
"votable":true,
"hashed_filename":"5485a21d47e3815cd7f23d5f8a8c8677"
},
"image_reference":2
},
"3":{
"image_data":{
"votable":true,
"hashed_filename":"4df10b887f12d65f2f541c99f0dd1ef8"
},
"image_reference":3
}
}
};
var result = Object.keys(o.images).reduce((acc, key) => {
acc += (acc ? "_" : "") + o.images[key].image_data.hashed_filename;
return acc;
},"")
console.log(result);
在这里,你可以找到更多关于Object.keys和Array.reduce
回答:
var result = ""; var findByValue = function (o, key) {
var p;
for (p in o) {
if (o.hasOwnProperty(p) && typeof o[p] === 'object') {
if (o[p][key])
{
result += o[p][key] + "_";
}
findByValue(o[p], key);
}
}
};
findByValue(_data, "hashed_filename");
console.log(result.substring(0, result.length -1));
以上是 提取所有值中的对象 的全部内容, 来源链接: utcz.com/qa/263393.html