如果key与lodash,vanilla js或d3相等,则合并两个javascript对象 [英] Merge two javascript objects if key is equal with either lodash, vanilla js, or d3
问题描述
我有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,income或uRate)到 finalData
对象。
cities.forEach(function(city){
var metrics = ['gdp','收入','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 如何通过键合并两个json对象值,但我不使用jQuery,并且更喜欢lodash,d3.js或者vanilla js解决方案。
谢谢。
使用lodash _。merge
将满足原始问题:
给定3个对象:
var gdp = {
city:city,
gdp :[],
};
var income = {
city:city,
income:[],
};
var uRate = {
city:city,
uRate:[],
};
然后输入lodash并执行:
var finalData = _.merge(gdp,income,uRate);
,结果如下所示:
{
city:city,
gdp:[],
income:[],
uRate :[]
}
工作解决方案: http://jsfiddle.net/e99KQ/3/
I have 3 similar javascript objects.
var gdp = {
"city": city,
"gdp": [],
};
var income = {
"city": city,
"income": [],
};
var uRate = {
"city": city,
"uRate": [],
};
Where I have many cities (n=28), and []
is my data array of integers with uniform length for each: gdp, income, uRate
.
GOAL: Combine these into a single object for each city:
var finalData = {
"city": city,
"gdp": [],
"income": [],
"uRate": []
}
I've tried variations of the following.
if ( ObjA.city == ObjB.city ) { Obj.city.metric = this.metric] };
Or, if city matches, add the metric (either gdp, income or uRate) to the finalData
object.
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
};
Here is a similar example using $.extend() with jQuery: How to merge two json objects values by keys, but I am not using jQuery and would prefer either lodash, d3.js or vanilla js solution.
Thank You.
Using lodash _.merge
will satisfy the original question:
Given 3 objects:
var gdp = {
"city": city,
"gdp": [],
};
var income = {
"city": city,
"income": [],
};
var uRate = {
"city": city,
"uRate": [],
};
Then bring in lodash and do:
var finalData = _.merge(gdp, income, uRate);
and the result is as desired:
{
"city": city,
"gdp": [],
"income": [],
"uRate": []
}
Working solution here: http://jsfiddle.net/e99KQ/3/
这篇关于如果key与lodash,vanilla js或d3相等,则合并两个javascript对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!