如何按数组/对象值的倍数过滤对象数组
How to filter array of object by multiples array/objects values
我需要过滤一个对象数组,如下所示:
var models = [
{
"family": "Applique",
"power":"8",
"volt":"12",
"color":"4100",
"type":"E27",
"ip":"20",
"dimensions":"230x92"
},
{
"family": "Lanterne",
"power":"20",
"volt":"230",
"color":"2700",
"type":"R7S",
"ip":"44",
"dimensions":"230x92"
},
{
"family": "Applique",
"power":"50",
"volt":"230",
"color":"",
"type":"GU10",
"ip":"20",
"dimensions":"227x227"
}
]
基于这样一个对象:
var filter = {
"family":[
"Applique", "Faretto", "Lanterne"
],
"power":{
"less":[
"30"
],
"greater":[
],
"equal":[
]
},
"volt":[
"12", "230"
],
"color":[
],
"type":[
],
"ip":[
"20"
]
"dimensions":[
],
}
因此,在这种情况下,结果可能是:
{
"family": "Applique",
"power":"8",
"volt":"12",
"color":"4100",
"type":"E27",
"ip":"20",
"dimensions":"230x92"
}
我已经阅读了另一个链接:如何通过检查多个值来过滤数组/对象,但我似乎无法将其适应我的情况。
提前感谢!
编辑:现在没有请求"电源"属性的条件
编辑2:对不起,我忘了指出过滤器对象可以为单个属性有多个值,比如:
var filter = {
"family":[
"Applique", "Faretto", "Lanterne"
],
...
"volt":[
"12", "230"
],
...
}
使用Array.filter
、Array.indexOf
和Object.keys
函数的解决方案:
var result = models.filter(function(obj){
var matched = true;
Object.keys(obj).forEach(function(k){
if (k === "power") { // The condition on "power" property is not requested now
return false;
}
if (filter[k] && filter[k].length && filter[k].indexOf(obj[k]) === -1) {
matched = false;
}
});
return matched;
});
console.log(JSON.stringify(result, 0, 4));
console.log
输出:
[
{
"family": "Applique",
"power": "8",
"volt": "12",
"color": "4100",
"type": "E27",
"ip": "20",
"dimensions": "230x92"
}
]
尝试lodash的_.filter
对于大于/低于他们的过滤,这里给出这个例子:
_.filter(users, _.conforms({ 'age': _.partial(_.gt, _, 38) }));
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象