0.0.3 • Published 6 years ago

arr-rm-repeat v0.0.3

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

对象数组根据叶子属性去重,并根据给定规则返回指定元素

how to use (example)

// 下载
npm install arr-rm-repeat

// 引入
var arr_rm_repeat = require('arr-rm-repeat')

// 使用
/**
 * oldArr: 对象数组
 * keys: String[]-去重属性的叶子访问顺序,只支持叶子结点
 * callback: 去重规则,返回布尔值的函数,其参数为两个去重叶子结点一样的元素,若返回true,是保留第一个参数元素,否则返回第二个参数元素
 * */
var newArr = arr_rm_repeat(oldArr, keys?, callback?)

// example
var arr = [
  {
    grade: {
      science: 88,
      english: 90
    },
    address: {
      province: {
        provinceName: '广东',
        detail: {
          city: '深圳'
        }
      }
    }
  },
  {
    grade: {
      science: 88,
      english: 91
    },
    address: {
      province: {
        provinceName: '广东',
        detail: {
          city: '深圳'
        }
      }
    }
  },
  {
    grade: {
      science: 80,
      english: 97
    },
    address: {
      province: {
        provinceName: '广东',
        detail: {
          city: '广州'
        }
      }
    }
  },
  {
    grade: {
      science: 77,
      english: 91
    },
    address: {
      province: {
        provinceName: '广东',
        detail: {
          city: '广州'
        }
      }
    }
  },
  {
    grade: {
      science: 70,
      english: 91
    },
    address: {
      province: {
        provinceName: '广东',
        detail: {
          city: '佛山'
        }
      }
    }
  }, 
  {
    grade: {
      science: 75,
      english: 97
    },
    address: {
      province: {
        provinceName: '广东',
        detail: {
          city: '佛山'
        }
      }
    }
  }, 
  {
    grade: {
      science: 67,
      english: 89
    },
    address: {
      province: {
        provinceName: '广东',
        detail: {
          city: '东莞'
        }
      }
    }
  },
  {
    grade: {
      science: 60,
      english: 89
    },
    address: {
      province: {
        provinceName: '广东',
        detail: {
          city: '东莞'
        }
      }
    }
  },
  {
    grade: {
      science: 88,
      english: 89
    },
    address: {
      province: {
        provinceName: '广东',
        detail: {
          city: '东莞'
        }
      }
    }
  }
]
//根据城市名称去重,并返回最高平均成绩
var arr = arr_rm_repeat(arr,['address', 'province', 'detail', 'city'], (e1, e2) => {
  if ((e1.grade.science +e1.grade.english) > (e2.grade.science +e2.grade.english)) {
    return true;
  } else {
    return false;
  }
})
//////////////////// 结果
{ grade: { science: 88, english: 91 },
  address: { province: { provinceName: '广东', detail: {city: '深圳'} } } }
{ grade: { science: 80, english: 97 },
  address: { province: { provinceName: '广东', detail: {city: '广州'} } } }
{ grade: { science: 75, english: 97 },
  address: { province: { provinceName: '广东', detail: {city: '佛山'} } } }
{ grade: { science: 88, english: 89 },
  address: { province: { provinceName: '广东', detail: {city: '东莞'} } } }