将javascript对象(属性+值)合并到一个对象中
Merging javascript objects (properties+values) into one object
所以我在尝试消除对重复数据的需要时遇到了这个问题。
假设我有一个物品清单。我根据一个特定的类别来区分它们。2个对象在Open"类别"中返回相同的数据。我不一定想删除数据,所以我认为合并/组合是最好的方法?
如果属于Open
类别,则合并所有对象。如何合并对象?我认为.contat()只适用于数组。那么这可能吗?
...
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
您所要求的是删除重复的对象,在这些对象中,您使用深度相等将重复定义为具有相同的值。看见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>
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 将javascript对象(属性+值)合并到一个对象中
- 将值和属性从一个对象合并到另一个对象
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中
- 将来自多个控制器的 AngularJS 范围对象合并到一个对象中
- 将同一数组中的多个对象合并为一个对象
- Javascript合并一个对象和一个数组
- 将一个对象合并到另一个对象的最佳方式(无覆盖)
- 获取错误:试图合并一个对象,而不是得到[object object]
- 在Javascript中合并(或连接、组合?)一个对象的数组
- 将两个对象合并为一个对象.我有这个数组
- 将多个对象合并为一个对象,使数组具有相同的属性值
- 将两个数组(键和值)合并到一个对象中