【发布时间】:2014-06-04 20:32:42
【问题描述】:
我有 3 个类似的 javascript 对象。
var gdp = {
"city": city,
"gdp": [],
};
var income = {
"city": city,
"income": [],
};
var uRate = {
"city": city,
"uRate": [],
};
我有很多城市 (n=28),[] 是我的整数数据数组,每个整数长度一致:gdp, income, uRate。
目标:将这些组合成每个城市的单个对象:
var finalData = {
"city": city,
"gdp": [],
"income": [],
"uRate": []
}
我尝试了以下变体。
if ( ObjA.city == ObjB.city ) { Obj.city.metric = this.metric] };
或者,如果城市匹配,将指标(gdp、收入或 uRate)添加到 finalData 对象。
cities.forEach(function ( city ) {
var metrics = ['gdp', 'income', 'uRate'];
metrics.forEach(function ( metric ) {
if ( metric.city == city ) { // edit: removed i
var finalData = {
"city": city,
"gdp": [],
"income": [],
"uRate": []
};
}
})
return finalData; // edit: moved this per suggestion
};
这是一个使用 $.extend() 和 jQuery 的类似示例:How to merge two object values by keys,但我没有使用 jQuery,我更喜欢 lodash、d3.js 或 vanilla js 解决方案。
谢谢。
【问题讨论】:
-
您需要将
return移动到循环之后。另外,i是什么? -
好的,我已经把它们搬过来了,谢谢。我是上次失败的尝试遗留下来的。
-
@DeBraid 你看过_.extend吗?
-
我不太明白你在做什么。既然
gdp等有一个city属性,那么您希望如何得出一个对象数组?最多一个city值将匹配gdp.city等。 -
谢谢泰德,我试图过分简化我正在做的事情,但翻译得不好!我发现 _.merge 需要 3 个对象并将执行所需的操作!
标签: javascript sorting object d3.js lodash