JavaScript通过数组中的值查找键

时间:2020-06-11 13:12:48

标签: javascript arrays object

我的数据结构如下:

var states = {
  'alabama': { abbv:'AL', ec: 9, winner: 0},
  'alaska': { abbv:'AK', ec: 3, winner: 0},
  'arizona': { abbv:'AZ', ec: 11, winner: 0}
}

如何说搜索“ AK”来找到“阿拉斯加”?

2 个答案:

答案 0 :(得分:6)

迭代状态名称(keys),然后使用find方法返回正确的状态。

var states = {
  'alabama': { abbv:'AL', ec: 9, winner: 0},
  'alaska': { abbv:'AK', ec: 3, winner: 0},
  'arizona': { abbv:'AZ', ec: 11, winner: 0}
}
const searchFor = "AK"
const foundState = Object.keys(states).find(stateName => {
  return states[stateName].abbv === searchFor
})

console.log(foundState)
// => "alaska"

console.log(states[foundState])
// => { abbv:'AK', ec: 3, winner: 0}

答案 1 :(得分:1)

有很多方法可以实现它,下面的示例是动态的,它带有一个源,“ prop”(属性)和一个值。例如:

function getByProp(source, prop, value) {
  let item = Object.keys(source).filter(key => source[key][prop] === value);
  if (item){
    return source[item[0]];
  }

  return null;
}

let alaska = getByProp(states, 'abbv', 'AK'); // -> alaska prop from states object!

然后,您只需传递“状态”,“ abbv”和“ AK”的参数即可。