使用Lodash从

时间:2019-07-19 07:43:27

标签: react-native dictionary filter lodash

我有以下数据数组。

const filterToolTips = [{
    remember_tip: 'some remember tip data.'
  },
  {
    background_tip: 'some background tip data'
  },
  {
    remember_on: 'some remember on tip data'
  },
  {
    remember_off: 'some remember off data.'
  },
  {
    background_on: 'some background on data '
  }
];

我正在尝试获取不同用例的每个关键文本。 因此,我正在使用lodash,但是,它显示的是未定义的。

const toolText = get(filterToolTips,'remember_tip');
console.log('toolTipText', toolTipText); // 'toolTipText', undefined

即使我也尝试过find

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

_.find()_.has()配合使用以查找具有所请求键的对象,然后使用_.get()来获取值:

const filterToolTips = [{"remember_tip":"some remember tip data."},{"background_tip":"some background tip data"},{"remember_on":"some remember on tip data"},{"remember_off":"some remember off data."},{"background_on":"some background on data "}];

const key  = 'remember_tip';

const toolText = _.get(
  _.find(filterToolTips, o => _.has(o, key)),
  key
);

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

但是,这是一个非常奇怪的数据结构,您应该对其进行转换(或要求服务器人员向您发送更多可用的数据)。此解决方案将数据结构转换为Map,然后获取值:

const filterToolTips = [{"remember_tip":"some remember tip data."},{"background_tip":"some background tip data"},{"remember_on":"some remember on tip data"},{"remember_off":"some remember off data."},{"background_on":"some background on data "}];

const tipsMap = new Map(Object.entries(Object.assign({}, ...filterToolTips)));

const key  = 'remember_tip';

const toolText = tipsMap.get(key);

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