Javascript 如何分组阵列&;物体?
我有一个包含3个对象的数组,但是第二个对象在“数据”对象中没有数组 我需要以正确的顺序为每个“艺术家”重复ng,但是第二个对象会引起问题。如何将每个对象组合在一起 在我的工厂中,我设置了一个调用来接收来自三个不同API的三个响应。我为每个人都设定了一个承诺,这样他们就会按照我所说的顺序来 工厂Javascript 如何分组阵列&;物体?,javascript,angularjs,underscore.js,Javascript,Angularjs,Underscore.js,我有一个包含3个对象的数组,但是第二个对象在“数据”对象中没有数组 我需要以正确的顺序为每个“艺术家”重复ng,但是第二个对象会引起问题。如何将每个对象组合在一起 在我的工厂中,我设置了一个调用来接收来自三个不同API的三个响应。我为每个人都设定了一个承诺,这样他们就会按照我所说的顺序来 工厂 .factory('timeline', function($http, $q) { var promise1 = $http({ method: "GET",
.factory('timeline', function($http, $q) {
var promise1 = $http({
method: "GET",
url: "http://api.example.com/last/3/?limit=3"
});
var promise2 = $http({
method: "GET",
url: "http://api.example.com/current/3/"
});
var promise3 = $http({
method: "GET",
url: "http://api.example.com/next/3/?limit=3"
});
return {
data: $q.all([promise1, promise2, promise3])
}
})
在我的控制器中,我得到这样的响应
[
Object
config
data: [Array 3]
-0: Object
artist : 'Artist'
title : 'Title'
-1: Object
-2: Object
,
Object
config
data: Object
artist : 'Artist'
title : 'Title
,
Object
config
data: [Array 3]
-0: Object
artist : 'Artist'
title : 'Title'
-1: Object
-2: Object
]
控制器
我尝试使用下划线进行筛选
.controller('StationCtrl', function($scope, $stateParams, $http, timeline) {
timeline.data.then(function(musicData) {
var row = [];
for (var i = 0; i < musicData.length; i++) {
var data = _.filter(musicData[i].data, function(x){
row.push(x);
})
}
})
})
我仍在尝试如何使用对象和数组,任何帮助/提示都将非常有用。理想情况下,我认为您应该只为第二个对象发送一个数组,其长度为1。如果API不在您的控制范围内,即第三方或任何其他方面,那么我们可以期待以其他方式解决问题。这是一种简单的方法,可以帮助您解决问题,而无需下划线。您只需要检查数据是对象还是数组
var arr = [
{ data: [{ artist: 'Artist' }, { artist: 'Artist2' }]},
{ data: { artist: 'Artist3' } },
{ data: [{ artist: 'Artist4' }]}
];
var flattened = [];
arr.forEach(function (el) {
if(Array.isArray(el.data)) {
flattened = flattened.concat(el.data);
} else {
flattened.push(el.data);
}
});
请参见上的示例。您可以去掉下划线,只需对以下内容执行嵌套操作:
.controller('StationCtrl', function($scope, $stateParams, $http, timeline) {
timeline.data.then(function(musicData) {
var row = [];
var dataElement;
var i;
var j;
for (i = 0; i < musicData.length; i++) {
dataElement = musicData[i].data;
if(typeof dataElement === 'object') {
row.push(dataElement)
} else if(typeof dataElement === 'array') {
for(j = 0; j < dataElement.length; j++) {
row.push(dataElement[j]);
}
}
}
})
})
.controller('StationCtrl',函数($scope、$stateparms、$http、timeline){
timeline.data.then(函数(musicData){
var行=[];
var数据元;
var i;
var j;
对于(i=0;i
是的,API不是我的控制权,让我看看我现在是否可以这样做。您也可以实施另一种方法,即在设置范围内的数据之前,对其进行操作并进行更新。您想如何将配置对象合并为一个?抱歉,已删除此项,实际上不想合并配置,只需数据谢谢!我需要学习Array.isArray,以前从未使用过
.controller('StationCtrl', function($scope, $stateParams, $http, timeline) {
timeline.data.then(function(musicData) {
var row = [];
var dataElement;
var i;
var j;
for (i = 0; i < musicData.length; i++) {
dataElement = musicData[i].data;
if(typeof dataElement === 'object') {
row.push(dataElement)
} else if(typeof dataElement === 'array') {
for(j = 0; j < dataElement.length; j++) {
row.push(dataElement[j]);
}
}
}
})
})