因此,在尝试消除对重复数据的需求时,我遇到了这个问题。
说我有一个对象列表。我根据特定类别将它们分开。并且2个对象在Open'category'中返回相同的数据。我不一定要删除数据,所以我认为合并/组合是最好的方法吗?
如果Open
类别,请合并所有对象。我该如何合并对象?我认为.concat()仅适用于数组。这甚至可能吗?
...
Open
------
const dupObjects = this.props.response.flight['open'];
// returns objects that look like this...
Object {delta: Array[1], lambda: Array[0], amount: }
Object {delta: Array[1], lambda: Array[0], amount: 200,000} // duplicate lets combine
Object {delta: Array[1], lambda: Array[0], amount: 200,000} // duplicate lets combine
if (category == 'Open'){
// merge objects
const dupObjects = this.props.response.flight['open'];
}
预期产出:
Open:
Delta : Information... Lambda: Information... Amount: $0
Delta : Information... Lambda: Information... Amount: $200,000
答案 0 :(得分:1)
您要问的是删除重复的对象,您可以使用深度相等的方法将副本定义为具有相同的值。请参阅http://underscorejs.org/#isEqual以下是对列表进行重复数据删除的示例脚本。它不是很优雅,但它有效:
var objects = [
{"delta":["St.Louis"],"lambda":[],"amount":200000},
{"delta":["St.Louis"],"lambda":[],"amount":200000},
{"delta":["Different"],"lambda":[],"amount":200000}
];
var dedupedList = _.reduce(objects,
function(result, item) {
var isDupe = _.any(result, function(anyItem) { return _.isEqual(item, anyItem); });
if (!isDupe) result.push(item);
return result;
},
[]);
console.log(dedupedList);

<script src="//jashkenas.github.io/underscore/underscore-min.js"></script>
&#13;