javascript 从javascript中的对象数组中删除重复项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 从javascript中的对象数组中删除重复项相关的知识,希望对你有一定的参考价值。

//  FUN METHOD
/**
 * Remove duplicates from an array of objects in javascript
 * @param arr - Array of objects
 * @param prop - Property of each object to compare
 * @returns {Array}
 */
function removeDuplicates( arr, prop ) {
  let obj = {};
  return Object.keys(arr.reduce((prev, next) => {
    if(!obj[next[prop]]) obj[next[prop]] = next; 
    return obj;
  }, obj)).map((i) => obj[i]);
}

//  FUN METHOD COMPRESSED - 147 bytes
/*
function removeDuplicates(e,n){var o={};return Object.keys(e.reduce(function(e,r){return o[r[n]]||(o[r[n]]=r),o},o)).map(function(e){return o[e]})}
*/

//  MORE EFFICIENT, BUT LESS FUN
/**
 * Remove duplicates from an array of objects in javascript
 * @param arr - Array of objects
 * @param prop - Property of each object to compare
 * @returns {Array}
 */
function removeDuplicates( arr, prop ) {
  var obj = {};
  for ( var i = 0, len = arr.length; i < len; i++ ){
    if(!obj[arr[i][prop]]) obj[arr[i][prop]] = arr[i];
  }
  var newArr = [];
  for ( var key in obj ) newArr.push(obj[key]);
  return newArr;
}

//  MORE EFFICIENT, BUT LESS FUN COMPRESSED - 143 bytes
/*
function removeDuplicates(e,r){for(var n={},o=0,t=e.length;t>o;o++)n[e[o][r]]||(n[e[o][r]]=e[o]);var u=[];for(var c in n)u.push(n[c]);return u}
*/

以上是关于javascript 从javascript中的对象数组中删除重复项的主要内容,如果未能解决你的问题,请参考以下文章

一道面试题引发的对javascript类型转换的思考

javascript中的字典

javascript中的this到底指啥?

JavaScript数组

JavaScript设计模式与开发实践-第2章-thiscall和apply

在HTML中使用JavaScript