Javascript 合并具有相同id的多个json
第一个json来自API,通过http调用获取此数据Javascript 合并具有相同id的多个json,javascript,angularjs,json,angularjs-scope,Javascript,Angularjs,Json,Angularjs Scope,第一个json来自API,通过http调用获取此数据 [ { "clientid": 1, "clientname": "facebook", "forecasted": 18, }, { "clientid": 2, "clientname": "youtube", "forecasted": 83, } ] 我创建第二个json来更新第一个json上的图像 [
[
{
"clientid": 1,
"clientname": "facebook",
"forecasted": 18,
},
{
"clientid": 2,
"clientname": "youtube",
"forecasted": 83,
}
]
我创建第二个json来更新第一个json上的图像
[
{
"clientid": 1,
"clientname": "facebook ",
"img":"images/21747.jpg"
},
{
"clientid": 2,
"clientname": "youtube",
"img": "images/youtube.svg"
},
]
现在我需要将两个json基于相同的id,并用第二个json的图像填充来自api的第一个json
app.factory('myFactory', function($http){
return{
client: function(callback){
$http({
method: "GET",
url: "http://www.erek.co.za/api/..",
cache:true
}).then(callback);
},
list: function(callback){
$http({
method: "GET",
url: "data/Client.json",
cache:true
}).then(callback);
}
};
});
app.controller('myController', function ($scope, myFactory) {
myFactory.client(function(response){
var data = response.data;
$scope.myClients = data;
})
myFactory.list(function (response) {
var data = response.data;
$scope.dark = data;
})
});
html
您可以使用对象。分配方法
let array1=[{“clientid”:1,“clientname”:“facebook”,“predicted”:18,},{“clientid”:2,“clientname”:“youtube”,“predicted”:83,}]
让array2=[{“clientid”:1,“clientname”:“facebook”,“img”:“images/21747.jpg”},{“clientid”:2,“clientname”:“youtube”,“img”:“images/youtube.svg”}]
var expected=array1.map(a=>Object.assign(a,array2.find(b=>b.clientid==a.clientid));
console.log(预期)代码>myFactory.client(函数(响应){
var数据=响应数据;
var clientsData=数据;
//获取客户端后,获取图像列表
myFactory.list(函数(响应){
var数据=响应数据;
var clientImages={}
对于(var i=0;ithanks@Alexandru lonut工作正常,但在我的例子中,第一个json来自服务器,在服务器内部,还有其他值为所有值创建一个数组?除了创建两个,没有其他方法了array@NelhAmstrong,请提供所需的输出以帮助您。@非常感谢,mike\u它工作正常,正如我所期望的那样
<div ng-repeat="client in myClients>
<a href="#{{client.clientid}}"
<div class="client-project-panel">
<div class="client-logo-container">
<div class="client-logo" >
<img ng-src="{{dark[$index].img}}" alt="{{client.clientname}}">
</div>
<div class="project-forecasted">
<h2 class="forecasted-value">{{client.forecasted}}%</h2>
<p>Complete</p>
</div>
</div>
</div>
</a>
myFactory.client(function(response){
var data = response.data;
var clientsData = data;
// after you fetch the clients get list of images
myFactory.list(function (response) {
var data = response.data;
var clientImages = {}
for(var i=0;i<data.length;i++){
clientImages[data[i].clientid] = data[i].img
}
$scope.dark = clientImages
$scope.myClients = clientsData
})
})