需要优雅的方法从Javascript中的json映射中将值提取为String

时间:2018-12-18 09:11:53

标签: javascript

我是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

我讨厌我的临时解决方案,并且想听听经验丰富的开发人员的一些改进建议或替代方案

3 个答案:

答案 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"