2016-10-13 116 views
0

我正在使用Set,我可以在其中存储唯一的原始值,但我无法根据其属性值存储唯一对象。javascript es6设置功能

这里是我的示例代码:

"use strict" 
var set = new Set(); 
var student1 = { 
    "name":"abc", 
    "id":1 
} 

var student2 = { 
    "name":"xyz", 
    "id":1 
} 
var student3 = { 
    "name":"def", 
    "id":3 
} 
set.add(student1); 
set.add(student2); 
set.add(student3); 
console.log(set); 

我想根据theier ID值设置为增加学生的对象,即如果他们的ID的值相同的两个对象将是相同的。

+1

也许你想要一个带有id作为键的'Map'。 –

+0

你可以首先将对象添加到数组中,在添加到“Set”之前检查重复的'id',参考链接:http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array –

回答

0

这可能更好地使用Map来代替您的目的。

const map = new Map() 

const student1 = { 
    "name":"abc", 
    "id":1 
} 

const student2 = { 
    "name":"xyz", 
    "id":1 
} 
const student3 = { 
    "name":"def", 
    "id":3 
} 

map.set(student1.id, student1); 
map.set(student2.id, student2); 
map.set(student3.id, student3); 

console.log(map); 
+0

谢谢,这将解决我的问题:)。 –

0

的ES6集对象使用value equality其中相当多的手段===检查(如曾经使用Javascript有这里虽然有点细微差别)。

正如其他人所说,也许你真正想要的是一个由id属性的Map。

+0

在添加之前,'Set'永远不会比较像{{prop:val}'这样的对象。 –