我有第一个数据对象,它有一个cafe列表,第二个数据对象有一个cafe类型列表。
我需要查找,获取并显示第一个数据对象的相应类型值和第二个数据对象的 ID 值。
例如:在咖啡馆列表中,我有 Pinta "type" : "3"
,这意味着 3 Bar 对象
第一个对象:
{
"list": {
"item": [
{
"ID": "31",
"name": "Staut",
"type": "1",
},
{
"ID": "34",
"name": "Pinta",
"type": "3",
}
]
}
}
第二个目标:
{
"list": {
"item": [
{
"ID": "1",
"name": "Restaurant",
},
{
"ID": "2",
"name": "Cafe",
},
{
"ID": "3",
"name": "Bar",
}
]
}
}
我可以用 Lodash 来做。它是对的,但是我无法显示它并使用高内存。
getValues: function() {
_.forEach(CafeJSON.list.item, function(cafeValue) {
_.forEach(TypeJSON.list.item, function(typeValue){
if (cafeValue.type == typeValue.ID) {
console.log("Cafe name is: ", cafeValue.name, "and type is: ", typeValue.name)
}
})
})
}
结果:
答案 0 :(得分:1)
我将类型对象简化为具有'3': 'Bar'
形式的键值对的对象,然后循环这些项,覆盖type
属性的值。
let list = {
"list": {
"item": [{
"ID": "31",
"name": "Staut",
"type": "1",
},
{
"ID": "34",
"name": "Pinta",
"type": "3",
}
]
}
}
let types = {
"list": {
"item": [{
"ID": "1",
"name": "Restaurant",
},
{
"ID": "2",
"name": "Cafe",
},
{
"ID": "3",
"name": "Bar",
}
]
}
}
let typesSimplified = types.list.item.reduce((a, b) => {
a[b.ID] = b.name;
return a;
}, {});
list.list.item.forEach(e => {
e.type = typesSimplified[e.type];
});
console.log(list);