我花了最后几个小时对上述问题进行了一些非常相似的回答,但经过一些循环和减少的实现后,我仍然没有得到我需要的解决方案。
我通过服务调用获取了一组对象。我正在将这些控制器数组对象推送到另一个数组,因为我需要一个数组来将数据加载到多选中。 I.E.
StatesService.getAreaCities().then(function(response) {
controller.cities = response.data.rows;
controller.areaOptions.push(controller.cities);
});
StatesService.getAreaStates().then(function(response) {
controller.states = response.data.rows;
controller.areaOptions.push(controller.states);
});
controller.areaOptions = [];
如何获得上面的数据结构,如第一张图片,一个对象数组?我尝试了reduce()
var newCities = controller.cities.reduce(function(city){
return controller.city;
}, {});
controller.areaOptions.push(newCities);
但它不是我想要的,因为它返回了一个具有所有城市属性及其所有值的单个对象。我需要每个对象包含城市及其价值。
修改
我找到了解决方案!感谢Lex。
我在每个服务中循环遍历数组中的每个对象并推送属性。 感谢所有人指导我正确的方向来解决这个问题,即使是那个贬低我的人:)
StatesService.getAreaCities().then(function(response) {
controller.cities = response.data.rows;
controller.cities.forEach(function(city){
controller.areaOptions.push(city);
});
});
答案 0 :(得分:2)
看起来response.data.rows
是一个数组。因此,当您push
response.data.rows
进入controller.areaOptions
时,您将行数组添加为数组元素。 (基本上使它成为一个二维数组)