js判断数组中一个对象的值是否相等,并取出值相等的数据的第一项?

1。现在有这个需求就是要把服务器返回的数据分组,
大致信息如下:返回的是一个数组

var list = [
                {
                   "no": "001", 
                   "call_time2": null, 
                   "note": null, 
                    "call_time": null,
                   "room": "房间1",
},
                {
                   "no": "002", 
                   "call_time2": null, 
                   "note": null, 
                    "call_time": null,
                   "room": "房间1",
},
 {
                   "no": "003", 
                   "call_time2": null, 
                   "note": null, 
                    "call_time": null,
                   "room": "放假2",
},
]

想要是是根据room是否相等来重新创建一个数组,想要的结果是如果room相等,就只取第一个room的这条数据,大致结果是下面这样:

var list = [
 {
                   "no": "001", 
                   "call_time2": null, 
                   "note": null, 
                    "call_time": null,
                   "room": "房间1",
},
{
                   "no": "003", 
                   "call_time2": null, 
                   "note": null, 
                    "call_time": null,
                   "room": "房间2",
},
]

向大神请教!

题目描述

题目来源及自己的思路

相关代码

粘贴代码文本(请勿用截图)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 2.8k
2 个回答

list.reduce((accu, cur) => {
if (accu.find((item) => item.room === cur.room)) {
return accu;
}
return accu.concat(cur);
}, []);

reduce大法好

楼上的办法很棒;
我来答一个简单的,用forEach的办法:

function unique(arr) {
            var rooms = [];
            var result = [];
            arr.forEach(function(t) {
                if (rooms.indexOf(t.room) == -1) {
                    rooms.push(t.room);
                    result.push(t);
                }
            });
            return result;
        }
var res  = unique(list)
// console.log(res)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题