我有字符串
"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 >})
我认为很明显将此字符串拆分为数组并且...但我不确定这样做,请帮助它。
答案 0 :(得分:2)
首先需要拆分db.field
以使其成为ids
的数组,以便在匹配项目时轻松评估。接下来,使用您已经构建的filter()来检查这些项目是否与使用includes的ids
匹配。
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>