我是JS新手,试图从json映射数组中提取一些值。 地图是这样的:
var tags = [{
Key: 'backup',
Value: 'true'
},
{
Key: 'Name',
Value: 'sdlc-root'
}
]
// Here is my first attempt:
var volName = tags.filter(function(item) {
return item.Key === 'Name';
})
.map(result => {
return result.Value;
});
console.log(volName);
结果是:[ 'sdlc-root' ]
,但是我只需要String值。
我现在采取的临时解决方案是:
var volName = tags.filter(function(item) { return item.Key === 'Name'; })
.map(result => { return result.Value; })**[0]**;
console.log(volName);
结果是:sdlc-root
我讨厌我的临时解决方案,并且想听听经验丰富的开发人员的一些改进建议或替代方案
答案 0 :(得分:5)
您可以找到元素或默认对象,并获取所需的属性。
var volName = (tags.find(({ Key }) => Key === 'Name') || {}).Value;
答案 1 :(得分:3)
编写如下的自定义函数
var tags = [{
Key: 'backup',
Value: 'true'
},
{
Key: 'Name',
Value: 'sdlc-root'
}
]
function f(tags) {
for (i = 0; i <= tags.length; i++) {
if (tags[i] && tags[i]['Key'] === 'Name') {
return tags[i]['Value']
}
}
}
console.log(f(tags))
答案 2 :(得分:0)
const tagsObj = tags.reduce((a, c) => { a[c.Key] = c.Value; return a }, {})
// {backup: "true", Name: "sdlc-root"}
console.log(tagsObj["Name"])
// "sdlc-root"