【发布时间】:2016-10-15 04:27:37
【问题描述】:
我正在处理一个包含我学校教师信息的大型 JSON 文件。我希望能够从该列表中提取所有教师的姓名,以便将它们放入 Firebase。但是,每当我遍历我的 JSON 文件并尝试过滤掉所有重复的教师姓名时,即使我尝试进行第二轮删除,我仍然会得到重复的结果。 JSON 如下所示:
{
"Id": "1",
…
"Instructor": "name1, name2, name3",
…
},
{
"Id": "2",
…
"Instructor": "name1",
…
},
{
"Id": "3",
…
"Instructor": "name1, name2",
…
}
如上所示,有时只有一个名称,有时有多个。我虽然在我的逻辑中处理了这个问题,但无论如何我仍然会得到重复。如果有人可以帮助我想出解决此问题的方法,将不胜感激。我将添加我已经在下面的代码。
public remove_duplicates(arr: any[]): any[] {
let output: any[] = [];
for (let i = 0; i < arr.length; i++) {
let instruc: any[] = arr[i].Instructor.split(',');
for (let j = 0; j < instruc.length; j++) {
let push: boolean = true;
arr[i].Instructor = instruc[j];
for (let k = 0; k < output.length; k++) {
let i1: string = output[k].Instructor;
let i2: string = arr[i].Instructor;
if (i1.trim().localeCompare(i2.trim()) == 0) {
push = false;
}
}
if (push)
output.push(arr[i]);
}
}
console.log(output.length);
for (let k = 0; k < output.length; k++) {
for (let i = k + 1; i < output.length; i++) {
if (new String(output[i].Instructor).valueOf().trim()
=== new String(output[k].Instructor).valueOf().trim()) {
output.splice(i, 1);
}
}
}
for (let k = 0; k < output.length; k++) {
console.log(output[k].Instructor);
}
console.log(output.length);
return arr;
}
ngOnInit() {
this.http.get('courses.json').take(1)
.map((res: Response) => res.json())
.subscribe(
data => {
this.list = data;
},
err => console.log(err),
() => this.remove_duplicates(this.list)
);
}
【问题讨论】: