javascript - 根据各种属性类型和值过滤数组

标签 javascript arrays filter

我正在尝试根据值过滤数组。 (下面是数组和值)

var value = "blue"; // could be red, blue, green, bold, italic

var array = [{
    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 = [];

然后,我试图找到一种过滤数据的解决方案。我可以做的颜色:

filtered = array.filter(function(obj) {
    if (obj.color == "green") {
        return obj;
    }
});

console.log(filtered);

但是,该值也可以是粗体或斜体。那么,如何有效地比较这些不同的数据类型并有效地过滤数据呢?

最佳答案

如果 colorbolditalic 是您想要过滤的唯一标准,那么简单的方法可能就足够了:

var value = "bold";

var array = [{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(function(item) {
  return item.color === value ||
    (value === 'bold' && item.bold) ||
    (value === 'italic' && item.italic);
})

console.log(filtered);

关于javascript - 根据各种属性类型和值过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41107527/

相关文章:

php - 使用正则表达式和 javascript 验证美国电话号码并使用 php 提交

javascript - 同一页面上的用户控件的多个实例

javascript - 获取数组中出现次数相同(最高)的所有元素

jquery - 如何在过渡期间过滤选项而不让所有内容重新出现?

javascript - 尝试发布 AJAX 请求时出现 POST 405(方法不允许)-Laravel 4

javascript - RegExp : I want to remove unnecessary words in the Sentence. 我该怎么做?

java - 竞争性编码 - 以最低成本清除所有级别 : Not passing all test cases

java - 如何从 ND4j 中的 NDArray 中选择一组给定的索引,类似于 numpy 的 arraydata[arrayIndex]?

sorting - 在 Google 表格中的过滤器 View 中排序时,ArrayFormula 列消失

jQuery根据数据属性过滤元素