我正在使用Set,我能够在其中存储唯一的原始值,但我无法根据其属性值在其中存储唯一对象。
以下是我的示例代码:
"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);
我想根据其ID值在集合中添加学生对象,即如果其ID的值相同,则两个对象将相同。
答案 0 :(得分: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);
答案 1 :(得分:0)
ES6 Set对象使用value equality,这几乎意味着===
检查(与Javascript一样,这里有一些细微差别)。
正如其他人所建议的那样,你真正想要的是id属性的地图。