Javascript 如何创建将对象作为元素的唯一数组?

Javascript 如何创建将对象作为元素的唯一数组?,javascript,Javascript,我有一个学生数组,我想创建一个独特的学生数组。每个学生都有一个唯一的id值,我想与这个id值进行比较 这是一个学生对象 { "id" = "3232aab1", //some other properties } var学生=[ { “id”:“3232aab1”//某些其他属性 } , { “id”:“3232aab1”//某些其他属性 }, { “id”:“3232aab2”//其他一些属性 } , { “id”:“3232aab3”//某些其他属性 } , {

我有一个学生数组,我想创建一个独特的学生数组。每个学生都有一个唯一的id值,我想与这个id值进行比较

这是一个学生对象

{
    "id" = "3232aab1",
    //some other properties
}   
var学生=[
{
“id”:“3232aab1”//某些其他属性
} ,
{
“id”:“3232aab1”//某些其他属性
}, 
{
“id”:“3232aab2”//其他一些属性
} ,
{
“id”:“3232aab3”//某些其他属性
} ,
{
“id”:“3232aab2”//其他一些属性
} ];
var tmpObj={};
var uniqArray=Students.reduce(函数(acc,curr){
如果(!tmpObj[curr.id]){
tmpObj[curr.id]=true;
附件推送(当前)
}
返回acc;
},[]);

控制台日志(uniqArray)我可能会采取类似的方法

班级学生扩展地图{
设置(键、值){
如果(this.has(key)){抛出新错误('Student ready there');}
返回super.set(键、值);
}
}
const students=新生();
学生集(1,{名字:'Peter'});
console.log(students.get(1));
//set(1,{name:'Gregor'});这将抛出
访问id

a[index].id;
要搜索的示例代码

var elem = 1; // id to be searched
//loop
for(var i=0; i<a.length; i++){
  if(elem == a[i].id){
    break;
  }
}
// now a[i] will return the required data {id:1,name:"something"}
// a[i].id = > 1 and a[i].name => something
var elem=1;//要搜索的id
//环路
对于(var i=0;i 1和a[i].name=>something

如果有下划线,可以使用以下命令

ES6
\uuq.uniq(学生,学生=>student.id)

ES5
\uuuq.uniq(Students,函数(student){return student.id;})

一个“唯一数组”是什么样子?…我想与这个id值进行比较。”好的。这似乎是一个很好的起点。你被困在哪里了?你的研究向你展示了什么?出现了什么?@Ryan一定没有具有相同id值的学生。@hellzone:那么原始版本可以有具有相同id值的学生吗?他们有其他属性吗?如果有,你如何决定要保留哪一个?@T.J.Crowder我认为Javascript可以有一个类似Java中Set的接口。该映射中设置的每个值都将是
未定义的
(顺便说一句,没有否决)这已经结束了,不是javascript。请检查tag@SagarV:这是JavaScript。试试看。好吧。但是他不熟悉JS。这对他来说非常困难。类和这些东西对JavaScription来说是新概念。如果OP不使用下划线呢?OP没有标记它,所以如果它是一个简单的JS答案会更好。
var elem = 1; // id to be searched
//loop
for(var i=0; i<a.length; i++){
  if(elem == a[i].id){
    break;
  }
}
// now a[i] will return the required data {id:1,name:"something"}
// a[i].id = > 1 and a[i].name => something