首页 > 解决方案 > 按值过滤对象数据

问题描述

给定以下数据

{ player1: 'healthy',
  player4: 'ready',
  player2: 'uncertain',
  player3: 'uncertain' 
}

我想知道lodash中是否有一种方法可以按对象的值过滤对象。例如,我想获得一个列表/数组,其中只有状态不确定的玩家,我想要另一个列表,其中包含所有状态不确定的玩家。

可能的解决方案

我认为这是可行的,但不确定它是否正确或正确的方法。

const result = _.pickBy(data, (key, value) => value.startsWith("uncert"));

标签: javascriptlodash

解决方案


使用获取数组键_.keys(),然后通过检查对象的原始值是否为(或以 /includes/etc... 开头)来获取/_.partition()的数组:uncertaincertainuncertain

const data = {player1: 'healthy',player4: 'ready',player2: 'uncertain',player3: 'uncertain'}

const value = 'uncertain'

const [uncertain, certain] = _.partition(_.keys(data), key => data[key] === value)

console.log(uncertain)
console.log(certain)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>


推荐阅读