【问题标题】:Contains search using lodash.js包含使用 lodash.js 进行的搜索
【发布时间】:2017-08-22 10:33:45
【问题描述】:
var codes = [
{id: 1, code: '123'},
{id: 2, code: '14123'},
{id: 3, code: '556'},
{id: 4, code: '71239'},
{id: 5, code: '289'},
];

var filterCodes = _.filter(codes, function (o) {
  return o.code ? _.includes(o.code, '123') : false
});

输出将是:'123','14123','71239'

【问题讨论】:

  • 你有什么问题?
  • 问题说lodash,标签说underscore?

标签: javascript search underscore.js contains


【解决方案1】:

如果我理解正确,您正在寻找所有代码而不是整个对象,其中包含“123”。

array.forEach

var codes = [{id: 1, code: '123'},{id: 2, code: '14123'},{id: 3, code: '556'},{id: 4, code: '71239'},{id: 5, code: '289'}];

var result = [];
codes.forEach(function(o){
  o.code && o.code.indexOf('123') >= 0 && result.push(o.code)
});
console.log(result)

【讨论】:

  • 由于OP的代码有return o.code ?...,我怀疑每个对象不一定有code属性
【解决方案2】:

为什么还要为此烦恼 Lodash?另外,我认为您缺少 map 步骤...

const codes = [{"id":1,"code":"123"},{"id":2,"code":"14123"},{"id":3,"code":"556"},{"id":4,"code":"71239"},{"id":5,"code":"289"}]

const filterCodes = codes
  .filter(o => typeof o.code === 'string' && o.code.includes('123'))
  .map(o => o.code)
console.info(filterCodes)

【讨论】:

  • 既然你已经在使用 ES6,你甚至可以试试string.includes。此外,如果这是 OP 正在寻找的,甚至他的代码也会这样做。不是吗?
  • @Rajesh 公平通话。跟上所有这些新方法太难了:)
  • @Rajesh 我想我知道 OP 缺少什么
  • 那是什么?
  • @Rajesh 将对象数组映射到代码字符串数组
猜你喜欢
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多