我做了一个过滤器来过滤等级。
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)