我正在forEach
使用loop
通过它iterates
通过所有对象,但只将最后一个写入log
{}的新对象。< / p>
我的Javascript
$http.get('data.json').success(
function (info) {
var log = {};
log.id= info.id;
log.profile = {};
angular.forEach(info.profile, function (value, key) {
console.log(key,value)
log.profile.inter = value.inter
}, log);
console.log(JSON.stringify(log));
}
);
答案 0 :(得分:0)
原因是你没有使用数组,你需要将值推入一个数组。
$http.get('data.json').success(
function (info) {
var log = {};
log.id= info.id;
log.profile = {};
log.profile.inter = []; //definition of array
angular.forEach(info.profile, function (value, key) {
console.log(key,value)
log.profile.inter.push(value.inter); //add values in array defined behind
}, log);
console.log(JSON.stringify(log));
}
);
还有更多解决方案,但现在将数值放入数组就足够了。
答案 1 :(得分:0)
弃用通知
已弃用
$http
遗留承诺方法.success
和.error
。请改用标准.then
方法。 1
$http.get('data.json')
.then(function onFulfilled(response) {
var info = response.data;
var log = {};
log.id= info.id;
log.profile = {};
angular.forEach(info.profile, function (value, key) {
console.log(key,value);
log.profile[key] = value.inter;
});
console.log(JSON.stringify(log));
}).catch ( function onRejected(response) {
console.log("ERROR ", response.status;
});
要将值保存到关联数组,请使用key
作为属性访问者。有关详细信息,请参阅MDN JavaScript Reference -- Property Accessors
log.profile[key] = value.inter;
答案 2 :(得分:0)
var log = {};
log.id= info.id;
log.profile = {};
log.profile.inter = []; //definition of array
angular.forEach(info.profile, function (value, key) {
console.log(key,value)
//needed to add key
log.profile[key] = {};
}, log);
console.log(JSON.stringify(log));
}