动态过滤功能,可接受密钥作为匹配器



我做了一个过滤器来过滤等级。

https://jsbin.com/jivosegagi/edit?html,js,console

var arr = [{
    "name": "james",
    "grade": "A"
}, {
    "name": "Alice",
    "grade": "B"
}, {
    "name": "Terrence",
    "grade": "C"
}, {
    "name": "james",
    "grade": "A"
}, {
    "name": "james",
    "grade": "D"
}, {
    "name": "james",
    "grade": "D"
}];
const selectedGrade = "C";
let x = arr.filter(obj => obj.grade === selectedGrade)
console.log(x);

它奏效当然很容易。但以上只是我更大挑战的缩影。我调用 API 来获取数据,我无法控制 api 数据的命名。如果 A、B、C、D 的显示文本与 API 给出的数据不同,该怎么办?

在您的情况下,您需要做的是找出 API 响应中可用的所有差异等级,然后通过映射此不同等级数组在选择字段中填充这些等级。

在此之后,您可以像现在一样过滤掉您的回复

var arr = [{
    "name": "james",
    "grade": "A"
}, {
    "name": "Alice",
    "grade": "B"
}, {
    "name": "Terrence",
    "grade": "C"
}, {
    "name": "james",
    "grade": "A"
}, {
    "name": "james",
    "grade": "D"
}, {
    "name": "james",
    "grade": "D"
}];
var unique = {};
var distinct = [];
for( var i in arr){
 if( typeof(unique[arr[i].grade]) == "undefined"){
  distinct.push(arr[i].grade);
 }
 unique[arr[i].grade] = 0;
}
console.log(distinct)

最新更新