javascript - 在javascript中多次过滤

标签 javascript object associative-array

所以,我有一个名为 products 的对象,它有 3 个属性:

var products = [
  {"name":"product1","size":"large","color":"blue","gender":"male"},
  {"name":"product2","size":"small","color":"pink","gender":"female"},
  {"name":"product3","size":"large","color":"green","gender":"male"},
  {"name":"product4","size":"large","color":"yellow","gender":"female"},
  {"name":"product5","size":"medium","color":"blue","gender":"female"},
  {"name":"product6","size":"large","color":"green","gender":"male"},
  {"name":"product7","size":"small","color":"yellow","gender":"male"},
  {"name":"product8","size":"medium","color":"red","gender":"female"},
  {"name":"product9","size":"large","color":"blue","gender":"male"},
  {"name":"product10","size":"small","color":"red","gender":"female"}
];

那么,如果我有 3 个选择框用于尺寸、颜色和性别,我将如何过滤这 3 个来获取产品名称?

我正在尝试在 javascript 中使用 .filter 。我知道如何在非关联数组中使用它。但是,关联数组呢?你如何使用它们?

最佳答案

var color = document.getElementById("color").value;
var gender = document.getElementById("gender").value;
var size = document.getElementById("size").value;
var matched = products.filter(function(e) {
    return (e.color == color && e.gender == gender && e.size == size);
}).map(function(e) { return e.name; });

关于javascript - 在javascript中多次过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18009611/

相关文章:

javascript - IBM Worklight - 解析 JSON 响应

javascript - 未捕获的类型错误 javascript 方法

javascript - 如何像数组一样迭代 JavaScript 对象的属性?

javascript - 尽管存在于 Chrome 控制台 TreeView 中,但对象属性(类型 = 对象)未定义

javascript - 该解决方案可以安全地通过 webSoket 通信在网络上访问用户的私有(private)证书吗?

javascript - 为特定结构JS的每个对象添加属性?

php - PHP 数组是否需要在使用前声明?

javascript - 尝试通过不存在的键获取值时,向 JavaScript 关联数组 "on the fly"添加新值

PHP - 将两个数组(相同长度)合并为一个关联?

javascript - 调用js函数改变css颜色