javascript – 如何过滤数组中的不同键并获得角度js的唯一结果

我正在尝试从响应中过滤数据并删除重复项并将数据推送到数组中,我的api响应如下:

{
   "_id":"0","yacht_id":"200","promo_id":"300","blocked_thru":"promotions","dates":"2017-08-23T00:00:00.000Z",},{
  "_id":"1","booking_id":{
        "_id":"100","booking_id":"BK163041494","blocked_thru":"booked","dates":"2017-08-30T00:00:00.000Z",{
   "_id":"2",}

从上面的响应中,如果对象中存在“booking_id”并且“booking_id._id”相同,那么我需要过滤并仅将唯一对象推送到数组.

我需要回复如下:

{
   "_id":"0",

任何帮助,将不胜感激.谢谢.

最佳答案
您可以使用array#reduce和array#some

var response =[{"_id":"0",{"_id":"1","booking_id":{"_id":"100",{"_id":"2",}];

var unique = response.reduce((res,obj) => {
  let isFound = res.some(o =>
    o['booking_id'] && o['booking_id']['_id'] === obj['booking_id']['_id'] );
  if(!isFound) {
    res.push(obj);
  }
  return res;
},[]);

console.log(unique);

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...