我有 1 个 API/项目返回 JSON
[
{
"id":100,
"name":"some name",
"x": "y"
},
{
"id":200,
"another name",
"x": "z"
}
]
然后我有另一个 API/costs 调用返回类似于:
[
{
"projectid":100,
"cost":300
},
{
"projectid":100,
"cost":100
},
{
"projectid":200,
"cost":500
}
]
我目前写了一堆 ajax/jquery/JS 代码,用“id”、“name”和总和“cost”构建一个 JS 对象。我只是将它字符串化为一个 JSON 对象。
但是,以下查询更复杂,而且通过原始 JS 似乎是一种低效且几乎不可能的方式,因此我切换到 Angular 服务,因为它更容易为前端团队注入(inject)。
我对 Angular 一点都不熟悉,我只有一个简单的服务来查询所有项目或给定 ID 的 1 个项目。
是否可以在 Angular 中查询 API 并构建一个仅从第一个查询中获取 name 和 id 的 JSON,并对 cost< 求和/em> 用于第二个查询中的适当项目,并返回一个 JSON:
[
{
"id":100,
"name":"some name",
"cost":400
}
]
[
{
"id":200,
"name":"another name",
"cost":200
}
]
谢谢
最佳答案
这是一个简单的 Javascript 和线性复杂度的解决方案。
var project = [{ "id": 100, "name": "some name", "x": "y" }, { "id": 200, name: "another name", "x": "z" }],
cost = [{ "projectid": 100, "cost": 300 }, { "projectid": 100, "cost": 100 }, { "projectid": 200, "cost": 500 }],
merged = function (p, c) {
var o = {},
r = p.map(function (a) {
o[a.id] = { id: a.id, name: a.name, cost: 0 };
return o[a.id];
});
c.forEach(function (a) {
o[a.projectid].cost += a.cost;
});
return r;
}(project, cost);
document.write('<pre>' + JSON.stringify(merged, 0, 4) + '</pre>');
关于javascript - Angular 服务 - 多个查询和求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36252471/