Javascript 基于各种属性类型和值筛选数组
我正在尝试根据值筛选数组。(以下是数组和值) 然后有一个新数组来存储过滤后的数组Javascript 基于各种属性类型和值筛选数组,javascript,arrays,filter,Javascript,Arrays,Filter,我正在尝试根据值筛选数组。(以下是数组和值) 然后有一个新数组来存储过滤后的数组 var filtered = []; 然后,我试图找到一个解决方案来过滤数据。我可以做它的颜色: filtered = array.filter(function(obj) { if (obj.color == "green") { return obj; } }); console.log(filtered); 但是,该值也可以是粗体或斜体。那么,我如何才能有效地比较这些不同
var filtered = [];
然后,我试图找到一个解决方案来过滤数据。我可以做它的颜色:
filtered = array.filter(function(obj) {
if (obj.color == "green") {
return obj;
}
});
console.log(filtered);
但是,该值也可以是粗体或斜体。那么,我如何才能有效地比较这些不同的数据类型并有效地过滤数据呢?似乎您需要两个不同的函数来按颜色或样式进行过滤。像这样的方法应该会奏效:
var value = "green";
filtered = array.filter(function(obj) {
if (obj.color == value && (obj.bold || obj.italic)) {
return obj;
}
});
function filterByColor(color) {
filtered = array.filter(function(obj) {
if (obj.color == "green") {
return obj;
}
});
console.log(filtered);
}
function filterByStyle(style) {
filtered = array.filter(function(obj) {
if (obj[style] === true) {
return obj;
}
});
console.log(filtered);
}
看起来您需要两个不同的函数来按颜色或样式进行过滤。像这样的方法应该会奏效:
function filterByColor(color) {
filtered = array.filter(function(obj) {
if (obj.color == "green") {
return obj;
}
});
console.log(filtered);
}
function filterByStyle(style) {
filtered = array.filter(function(obj) {
if (obj[style] === true) {
return obj;
}
});
console.log(filtered);
}
如果
颜色
、粗体
和斜体
是您要筛选的唯一标准,那么简单的方法可能就足够了:
var value=“bold”;
var数组=[{color:“red”,bold:false,italic:false},{color:“blue”,bold:false,italic:false},{color:“green”,bold:true,italic:false},{color:“green”,bold:false,italic:true}];
var filtered=array.filter(函数(项){
返回项。颜色===值||
(值=='bold'和&item.bold)||
(值=='italic'和&item.italic);
})
console.log(过滤)代码>如果颜色
、粗体
和斜体
是您要筛选的唯一标准,那么简单的方法可能就足够了:
var value=“bold”;
var数组=[{color:“red”,bold:false,italic:false},{color:“blue”,bold:false,italic:false},{color:“green”,bold:true,italic:false},{color:“green”,bold:false,italic:true}];
var filtered=array.filter(函数(项){
返回项。颜色===值||
(值=='bold'和&item.bold)||
(值=='italic'和&item.italic);
})
console.log(过滤)代码>使用JQuery这很简单
filtered = $.grep(array,function(n,i){return n.color=='green' && n.bold==true})
您可以根据需要更改和添加参数(甚至嵌套语句)。
n是对象的当前迭代,i是计数。
如果return为true,它将被添加到输出中
有关使用JQuery的更多信息,请参见
filtered = $.grep(array,function(n,i){return n.color=='green' && n.bold==true})
您可以根据需要更改和添加参数(甚至嵌套语句)。
n是对象的当前迭代,i是计数。
如果return为true,它将被添加到输出中
有关更多信息,请参见我提出了一种基于对象属性进行过滤的通用方法:
var对象={
粗体:错,
斜体:假
};
变量数组=[{
颜色:“红色”,
粗体:错,
斜体:假
}, {
颜色:“蓝色”,
粗体:错,
斜体:假
}, {
颜色:“绿色”,
黑体字:对,
斜体:假
}, {
颜色:“绿色”,
粗体:错,
斜体:对
}];
var philter=(arr,obj)=>arr.filter(x=>{
var bool=真;
用于(obj中的var prop)
如果(对象[prop]!==x[prop])
布尔=假;
返回布尔;
})
log(philter(数组,objet))代码>我提出了一种基于对象属性进行过滤的通用方法:
var对象={
粗体:错,
斜体:假
};
变量数组=[{
颜色:“红色”,
粗体:错,
斜体:假
}, {
颜色:“蓝色”,
粗体:错,
斜体:假
}, {
颜色:“绿色”,
黑体字:对,
斜体:假
}, {
颜色:“绿色”,
粗体:错,
斜体:对
}];
var philter=(arr,obj)=>arr.filter(x=>{
var bool=真;
用于(obj中的var prop)
如果(对象[prop]!==x[prop])
布尔=假;
返回布尔;
})
log(philter(数组,objet))代码>检查颜色是否等于值,并使用括号表示法返回属性值。只要对象不具有具有颜色名称的属性,这将起作用
var数组=[{“color”:“red”,“bold”:false,“italic”:false},{“color”:“blue”,“bold”:false,“italic”:false},{“color”:“green”,“bold”:true,“italic”:false},{“color”:“green”,“bold”:false,“italic”:true}];
var value=“italic”;//可以是红色、蓝色、绿色、粗体、斜体
var result=array.filter(函数(obj){
返回obj.color==value | | obj[value];
});
控制台日志(结果)代码>检查颜色是否等于值,并使用括号表示法返回属性值。只要对象不具有具有颜色名称的属性,这将起作用
var数组=[{“color”:“red”,“bold”:false,“italic”:false},{“color”:“blue”,“bold”:false,“italic”:false},{“color”:“green”,“bold”:true,“italic”:false},{“color”:“green”,“bold”:false,“italic”:true}];
var value=“italic”;//可以是红色、蓝色、绿色、粗体、斜体
var result=array.filter(函数(obj){
返回obj.color==value | | obj[value];
});
控制台日志(结果)代码>您正在使用JQuery吗?那会让这更早是的,我现在正在使用JQuery吗?那会让这更早是的,我现在