我有
var lookupMap。这是一段摘录:
{ ANDERSON: { county: 'ANDERSON', code: 'us-tx-001' },
ANDREWS: { county: 'ANDREWS', code: 'us-tx-003' } ,
WARD: { county: 'WARD', code: 'us-tx-475' },
WASHINGTON: { county: 'WASHINGTON', code: 'us-tx-477' },
WEBB: { county: 'WEBB', code: 'us-tx-479' }}
它是县的长索引及其相应的代码。并非所有都会被使用。
我有var uniquedata,看起来像:
[ 'us-tx-477', 'us-tx-479' ]
这是一个代码数组。
我也有var结果,看起来像:
{ WASHINGTON: 9, WEBB: 4 }.
基本上,我现在要做的是从uniquedata中查看元素,并为每个元素查找它所属的县,并用代码替换县名,但保持计数相同。
因此,例如,输出应为:
{ 'us-tx-477' : 9,
'us-tx-479': 4}
最好的方法是什么?我试图隔离元素时遇到麻烦......这看起来真的很混乱。我无法绕过它。
答案 0 :(得分:0)
遍历uniquedata中的每个项目并在数据对象中进行查找。
函数findInLookupMap
遍历lookupmap中的每个对象,并返回代码的县名。
像这样的东西
var cache = {};
function findInLookupMap(key){
if(cache[key]) return cache[key]; // <--- cache to avoid looping in further requests
for(var o in data){
if(data[o].code == key){
cache[key] = data[o].county;
return data[o].county;
}
}
}
var output = {};
for(var i=0;i<uniquedata.length;i++){ // <--- iterate through each item in uniquedata
var code = findInLookupMap(uniquedata[i]);
output[uniquedata[i]] = results[code];
}
console.log(output);
var lookupMap = {
"ANDERSON": {
"county": 'ANDERSON',
"code": 'us-tx-001'
},
"ANDREWS": {
"county": 'ANDREWS',
"code": 'us-tx-003'
},
"WARD": {
"county": 'WARD',
"code": 'us-tx-475'
},
"WASHINGTON": {
"county": 'WASHINGTON',
"code": 'us-tx-477'
},
"WEBB": {
"county": 'WEBB',
"code": 'us-tx-479'
}
};
var uniquedata = ['us-tx-477', 'us-tx-479'];
var results = {
WASHINGTON: 9,
WEBB: 4
};
var cache = {};
function findInLookupMap(key) {
if (cache[key]) return cache[key];
for (var o in lookupMap) {
if (lookupMap[o].code == key) {
cache[key] = lookupMap[o].county;
return lookupMap[o].county;
}
}
}
var output = {};
for (var i = 0; i < uniquedata.length; i++) {
var code = findInLookupMap(uniquedata[i]);
output[uniquedata[i]] = results[code];
}
console.log(output);
&#13;