Lodash - 按字符串1,2过滤

时间:2016-05-21 16:57:17

标签: filter lodash

我有字符串

"1,2" // which is from the db.field

我正在尝试使用lodash进行过滤,并尝试以下工作

_.filter(jsonArray, function(res) { return (res.id == 1 || res.id == 2); });

请假设jsonArray如下:

[
{ 'id': '1', 'age': 60 },
{ 'id': '2', 'age': 70 },
{ 'id': '3', 'age': 22 },
{ 'id': '4', 'age': 33 }
];

这里的问题是我需要拆分sting 1,2并应用,

但请注意,1,2并不总是1,2 - 它可能是1,2,3,这个字符串是db.field的动态。

现在我正在搜索是否有任何方法可以使用字符串如

-.filter(jsonArray, function(res){ return res.id <is equal to one of the value in 1,2,3,4 >})

我认为很明显将此字符串拆分为数组并且...但我不确定这样做,请帮助它。

1 个答案:

答案 0 :(得分:2)

首先需要拆分db.field以使其成为ids的数组,以便在匹配项目时轻松评估。接下来,使用您已经构建的filter()来检查这些项目是否与使用includesids匹配。

var ids = db.field.split(',').map(Number);
var result = _.filter(jsonArray, function(res) {
  return _.includes(ids, res.id);
});

var db = { field: '1,2' };


var jsonArray = [
  { 'id': 1, 'age': 60 },
  { 'id': 2, 'age': 70 },
  { 'id': 3, 'age': 22 },
  { 'id': 4, 'age': 33 }
];

var ids = db.field.split(',').map(Number);
var result = _.filter(jsonArray, function(res) {
  return _.includes(ids, res.id);
});

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
<script src="https://cdn.jsdelivr.net/lodash/4.12.0/lodash.min.js"></script>