Javascript 从angularjs对象数组中获取值,它只返回最后一项
我想使用angular.forEach从对象数组中获取值 每个项目中元素的每一个值。当我使用angular.forEach函数并循环对象数组时,它只返回最后一项的值。我花了好几个小时寻找和思考一个解决方案,但没有成功 请查看我的代码: 这是我想从json文件中获取值的对象数组 data.json:Javascript 从angularjs对象数组中获取值,它只返回最后一项,javascript,angularjs,Javascript,Angularjs,我想使用angular.forEach从对象数组中获取值 每个项目中元素的每一个值。当我使用angular.forEach函数并循环对象数组时,它只返回最后一项的值。我花了好几个小时寻找和思考一个解决方案,但没有成功 请查看我的代码: 这是我想从json文件中获取值的对象数组 data.json: [ { "platform": "web-desktop", "cdn": 4.3673292887e+10, "p2p": 5.667683381e+09, "t
[
{
"platform": "web-desktop",
"cdn": 4.3673292887e+10,
"p2p": 5.667683381e+09,
"total": 4.9340976268e+10,
"upload": 5.774321084e+09,
"percentage": 12,
"viewers": 1,
"maxViewers": 10,
"averageViewers": 1.5725853094274147,
"trafficPercentage": 69.49888073943228,
"live": "unknown"
},
{
"platform": "android",
"cdn": 1.7035777808e+10,
"p2p": 1.526916976e+09,
"total": 1.8562694784e+10,
"upload": 2.753179184e+09,
"percentage": 9,
"viewers": 1,
"maxViewers": 12,
"averageViewers": 1.416065911431514,
"trafficPercentage": 26.14635154335973,
"live": "unknown"
},
{
"platform": "ios",
"cdn": 2.994960132e+09,
"p2p": 9.6722616e+07,
"total": 3.091682748e+09,
"upload": 3.3788984e+07,
"percentage": 4,
"viewers": 1,
"maxViewers": 3,
"averageViewers": 1.152542372881356,
"trafficPercentage": 4.354767717207995,
"live": "unknown"
}
]
controller.js:
'use strict';
var app= angular.module('app');
app.controller('MainController',['$scope', '$http', MainController]);
function MainController ($scope, $http) {
var request = {
method: 'get',
url: 'data.json',
dataType: 'json',
contentType: "application/json"
};
$scope.arrData = new Array;
$http(request)
.then(function onSuccess(jsonData) {
// LOOP THROUGH DATA IN THE JSON FILE.
angular.forEach(jsonData.data, function (item) {
//Get data in each object
$scope.arrData = Object.keys(item).map(function(key){return item[key]});// get all values
});
console.log($scope.arrData);
});
}
结果如下:
["ios", 2994960132, 96722616, 3091682748, 33788984, 4, 1, 3, 1.152542372881356, 4.354767717207995, "unknown"]
或者,我想得到每件物品的全部信息。我应该向我的代码中添加什么才能使其正常工作!谢谢。在每次迭代的
forEach
使用map()
而不是forEach()
并在outer map()回调中返回键映射
我明白了,谢谢。此外,我还需要从结果数组中删除“platform”和“live”的值。我知道它是通过数组中的切片(1,10)解决的,但在我的情况下,如何做到这一点?可以在内部映射
对象中添加filter()
。键(项)。过滤器(函数(键){/*如果需要,返回true;如果不需要,返回false*/})。映射(/*与前面一样*/})
我应该在filter function()中放入什么代码?我需要从中删除platform和live的值。切片(1,10)它不起作用。请尝试:filter(function(key){return key!='live'&&key!='platform'}
$scope.arrData = jsonData.data.map(function(item) {
return Object.keys(item).map(function(key) {
return item[key]
});
});