Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于各种属性类型和值筛选数组_Javascript_Arrays_Filter - Fatal编程技术网

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吗?那会让这更早是的,我现在