将javascript对象(属性+值)合并到一个对象中

时间:2016-05-11 16:06:38

标签: javascript

因此,在尝试消除对重复数据的需求时,我遇到了这个问题。

说我有一个对象列表。我根据特定类别将它们分开。并且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

1 个答案:

答案 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;
&#13;
&#13;