在.map中获取键和值

时间:2017-06-08 07:25:18

标签: javascript ecmascript-6

不确定我在这里缺少什么:

export function extractOptions(options){
  return options.map((option, i) => {
    if(!option.value){
      logRequiredOptionsMissingError(option.key)
      process.exit(1)
      return
    }
  })
}

将此数组作为选项:

[{ branch: 'A15'},
 { awsKey: 'AKIAQ'},
 { awsSecret: '0ro'}]

.value我未定义。是的,那里有数据,我在调试时看到它。

基本上我希望它通过并检查每个键是否有值...否则记录错误并在遇到没有值的键时停止

更新

我最终选择了这个:

export function extractOptions(options){
  for (let option of options) {
    if(!option || option.length < 1){
      logRequiredOptionsMissingError(option[0][0])
      process.exit(1)
      return
    }
  }

  return options
}

作为额外奖励,我将分享我的测试

it('extracts options', () => {
      const options = [
        { branch: 'A15'},
        { awsKey: 'AKIAQ'},
        { awsSecret: '0ro'}
      ],
        list = Deploy.extractOptions(options)

      expect(list).to.deep.equal(options)
 })

1 个答案:

答案 0 :(得分:1)

您可以使用Object.entries()

从对象获取键值对作为数组
return options.map((option, i) => {
    var data = Object.entries(option)
    console.log(data[0][0], data[0][1]) // will be your key and value
    if(!data[0][1]){
      logRequiredOptionsMissingError(data[0][0])
      process.exit(1)
      return
    }
  })

<强> Documentation on Object.entries()