【问题标题】:In an array of objects, filter objects that are equal. (all the properties match) [closed]在对象数组中,过滤相等的对象。 (所有属性匹配)[关闭]
【发布时间】:2019-11-01 12:18:33
【问题描述】:
const timings = [
  {startH: 10, startM: 20, endH: 11, endM: 30},
  {startH: 10, startM: 20, endH: 11, endM: 30},
  {startH: 9, startM: 10, endH: 11, endM: 30},
  {startH: 10, startM: 20, endH: 10, endM: 30},
  {startH: 10, startM: 20, endH: 11, endM: 30},
  {startH: 10, startM: 20, endH: 11, endM: 30}
];

返回数组内所有相等的对象

【问题讨论】:

标签: javascript lodash


【解决方案1】:

尝试使用下一个代码:

const timings = [
  {startH: 10, startM: 20, endH: 11, endM: 30},
  {startH: 10, startM: 20, endH: 11, endM: 30},
  {startH: 9, startM: 10, endH: 11, endM: 30},
  {startH: 10, startM: 20, endH: 10, endM: 30},
  {startH: 10, startM: 20, endH: 11, endM: 30},
  {startH: 10, startM: 20, endH: 11, endM: 30}
];
Array.prototype.uniqueObjects = function (props) {
    function compare(a, b) {
      var prop;
        if (props) {
            for (var j = 0; j < props.length; j++) {
              prop = props[j];
                if (a[prop] != b[prop]) {
                    return false;
                }
            }
        } else {
            for (prop in a) {
                if (a[prop] != b[prop]) {
                    return false;
                }
            }

        }
        return true;
    }
    return this.filter(function (item, index, list) {
        for (var i = 0; i < index; i++) {
            if (compare(item, list[i])) {
                return false;
            }
        }
        return true;
    });
};
 
var uniqueObject = timings.uniqueObjects(["startH", "startM", "endH", "endM"]);

console.log(uniqueObject);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2019-05-29
    相关资源
    最近更新 更多