【发布时间】:2018-03-03 19:15:44
【问题描述】:
我有一个包含对象的数组,例如:
data1 = [
{
"name": "Name-A",
"image": "images/a.png",
"prices": [
{
"name": "c1",
"buy": "10",
"sell": "11"
},
{
"name": "c2",
"buy": "16",
"sell": "15"
}
]
},
{
"name": "Name-B",
"image": "images/b.png",
"prices": [
{
"name": "c1",
"buy": 11,
"sell": 12
}
]
},
{
"name": "Name-C",
"image": "images/c.png",
"prices": [
{
"name": "c3",
"buy": 123,
"sell": 124
}
]
}]
在这里,我想根据存储在其他 API 链接中的排名将排名添加到特定名称,例如:
data2=[{
"name": "cs1",
"symbol": "C1",
"id": 1
},
{
"name": "cs2",
"symbol": "C2",
"rank": 2,
"id": 1027
},
{...},
{...}
....]
所以结果数组应该是这样的,
[ {
"name": "Name-A",
"image": "images/a.png",
"prices": [
{
"name": "c1",
"rank": 1,
"buy": "10",
"sell": "11"
},
{
"name": "c2",
"rank": 2,
"buy": "16",
"sell": "15"
}
]
},
{
"name": "Name-B",
"image": "images/b.png",
"prices": [
{
"name": "c1",
"rank": 1,
"buy": 11,
"sell": 12
}
]
},
{
"name": "Name-C",
"image": "images/c.png",
"prices": [
{
"name": "c3",
"rank": 3,
"buy": 123,
"sell": 124
}
]
}]
我需要比较前两个对象数组并需要在第三个数组中获取rank。
前两个数组分别与前两个数组的name 和symbol 进行比较。
我曾尝试在 javascript 中使用map,但结果数组在所有对象中都包含相同的rank,可能是最后一个对象的排名。
我的代码:
{
data1.map((cd)=>{
cd.prices.map((p)=>{
data2.map((r)=>{
if(r.symbol.toUpperCase() === p.name.toUpperCase()){
cd.prices.forEach(function(cs){
cs.rank = r.rank;
});
}
})
}) }
如何做到这一点,以便我得到其中包含排名的对象的结果数组?我被这个困住了。
【问题讨论】:
标签: javascript arrays json ecmascript-6 javascript-objects