提取所有值中的对象

的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

回到顶部