【发布时间】:2026-01-26 18:20:06
【问题描述】:
我正在渲染本地 JSON 数据(“类别”),并且正在显示重复的数据。我正在尝试将.filter() 与其他两种方法(.sort() 和.map())一起使用,但我无法删除重复项。我的代码中有什么东西看起来不对吗?
JS sn-p:
var testjson = {
"d": {
"results": [{
"Title": "Aardvark",
"Category": "Animals",
"Description": "My Test description",
"TopTrainingCourse": false,
"ID": 1,
"Modified": "2019-03-05T20:13:46Z",
"Created": "2019-03-05T20:13:36Z"
}, {
"Title": "Red Panda",
"Category": "Animals",
"Description": "Donec id dictum sem",
"TopTrainingCourse": true,
"ID": 10,
"Modified": "2019-03-06T21:08:25Z",
"Created": "2019-03-06T21:08:25Z"
}, {
"Title": "Tennis",
"Category": "Sports",
"Description": "Mauris sagittis ligula",
"TopTrainingCourse": true,
"ID": 11,
"Modified": "2019-03-06T21:08:35Z",
"Created": "2019-03-06T21:08:35Z"
}]
}
}
loadAllCourses() {
let jsonRes = testjson.d.results
.filter((elem, index, self) => {
return (index === self.indexOf(elem));
})
.sort(function(a,b) { // sorts alphabetically
return (a.Category > b.Category) ? 1 : ((b.Category > a.Category) ? -1 : 0)
})
.map(x => {
return {
"Category": x.Category,
"Title": x.Title
}
});
let curIndex = 0;
$.each(jsonRes, function(idx, val) {
$(".form-control").append("<option><div data-toggle=\"modal\" data-target=\"#modal-id\">" + val.Category + "</div></option>") // dropdown
【问题讨论】:
-
我不明白这些问题 - 为什么
.filter应该被链接或不链接 - 根据what?.filter如何影响.map使其过时? -
您是否复制并粘贴了此脚本?数组中的第三个对象缺少它的开始大括号。另外,我会检查
self的值。我很确定它默认为window -
@Kramb 此代码示例中缺少大括号,但我的代码中没有。我现在就修复它
-
@VLAZ 我的问题很不清楚,所以我在我的问题正文中澄清了一些事情。基本上我无法删除重复的类别,我想知道问题是否是由链接
.filter()到.sort()引起的。 -
@Kramb
self是数组 - 它作为第三个参数传入.filter回调。而且我不认为它曾经是windows-this的值 可以 是window但self不会自动分配 - 它只是经常用于捕获 @987654338 的值@ 到正确的上下文。
标签: javascript jquery json filter