将数组值与对象键进行比较并将值设置为数组
Compare Array value with Object key and set the value to array
我有一个数组和一个对象。我应该将数组值与对象键进行比较。如果两者都匹配,我应该将对象的值压入数组。
我已经通过以下逻辑实现了这一点。
var arr = [{ "name": "Coal", "segmentId": null }, { "name": "Ash", "segmentId": null }];
var obj = {
"Ash": {
"October 2015": "66",
"segmentId": "66",
"December 2015": "435",
"November 2015": "34535"
},
"Coal": {
"October 2015": "23455",
"segmentId": "66",
"November 2015": "3454",
"December 2015": "345"
}
};
document.writeln("Original Array : " + JSON.stringify(arr));
for (var i = 0; i < arr.length; i++) {
var keys = Object.keys(obj);
for (var j = 0; j < keys.length; j++) {
if (arr[i].name === keys[j]) {
arr[i].segmentId = obj[keys[j]].segmentId;
}
}
}
document.writeln("Transformed Array : " + JSON.stringify(arr));
我想知道,有没有其他最好的方法来处理这个或任何 js 库来简化它?
尝试使用 javascript 高阶函数:
arr.map(function(item){
item["segmentId"] = obj[item["name"]]["segmentId"]
});
尽管您没有提供 fiddle.But,但您可以在 jquery 中提供,如下所示:
请注意我正在为结果集创建一个新数组。
var arr = [{ "name": "Coal", "segmentId": null }, { "name": "Ash", "segmentId": null }];
var obj = {
"Ash": {
"October 2015": "66",
"segmentId": "66",
"December 2015": "435",
"November 2015": "34535"
},
"Coal": {
"October 2015": "23455",
"segmentId": "69",
"November 2015": "3454",
"December 2015": "345"
}
};
var a=[];
$.each(arr, function(i, v) {
$.each(obj, function(oi, ov) {
if(arr[i].name==oi)
a.push(obj[oi].segmentId);
});
});
alert(a.length);
我有一个数组和一个对象。我应该将数组值与对象键进行比较。如果两者都匹配,我应该将对象的值压入数组。
我已经通过以下逻辑实现了这一点。
var arr = [{ "name": "Coal", "segmentId": null }, { "name": "Ash", "segmentId": null }];
var obj = {
"Ash": {
"October 2015": "66",
"segmentId": "66",
"December 2015": "435",
"November 2015": "34535"
},
"Coal": {
"October 2015": "23455",
"segmentId": "66",
"November 2015": "3454",
"December 2015": "345"
}
};
document.writeln("Original Array : " + JSON.stringify(arr));
for (var i = 0; i < arr.length; i++) {
var keys = Object.keys(obj);
for (var j = 0; j < keys.length; j++) {
if (arr[i].name === keys[j]) {
arr[i].segmentId = obj[keys[j]].segmentId;
}
}
}
document.writeln("Transformed Array : " + JSON.stringify(arr));
我想知道,有没有其他最好的方法来处理这个或任何 js 库来简化它?
尝试使用 javascript 高阶函数:
arr.map(function(item){
item["segmentId"] = obj[item["name"]]["segmentId"]
});
尽管您没有提供 fiddle.But,但您可以在 jquery 中提供,如下所示:
请注意我正在为结果集创建一个新数组。
var arr = [{ "name": "Coal", "segmentId": null }, { "name": "Ash", "segmentId": null }];
var obj = {
"Ash": {
"October 2015": "66",
"segmentId": "66",
"December 2015": "435",
"November 2015": "34535"
},
"Coal": {
"October 2015": "23455",
"segmentId": "69",
"November 2015": "3454",
"December 2015": "345"
}
};
var a=[];
$.each(arr, function(i, v) {
$.each(obj, function(oi, ov) {
if(arr[i].name==oi)
a.push(obj[oi].segmentId);
});
});
alert(a.length);