一旦解决了特定的承诺,我希望循环遍历响应中的每一项,并按特定顺序将它们推入数组中。
status-startstatus-in-progressstatus-completed我该怎么做呢?到目前为止,我的代码如下:
dashService.getBatches(refresh)
.then(function (response) {
if (response.error) {
console.log("No data received");
} else {
angular.forEach(response.items, function (item) {
if (item.status === 'start') {
currentBatches.push(job);
}
});
}
});发布于 2017-06-07 10:22:40
这个怎么样?
var newA=dataList.filter(x=>x.status=='status-start').concat(dataList.filter(x=>x.status=='status-in-progress')).concat(dataList.filter(x=>x.status=='status-completed'))发布于 2017-06-07 10:20:16
一旦收到答复,请执行以下操作:
dataList = response.items;
var currentBatches = [];
var statusStartItems = dataList.filter(function(item){ return item.status === 'status-start';});
//Loop through status-start items and push into currentbatches array
statusStartItems.each(function(item){
currentBatches.push(item);
}
var statusInItems = dataList.filter(function(item){ return item.status === 'status-in';});
//Loop through status-in items and push into currentbatches array
statusInItems .each(function(item){
currentBatches.push(item);
}..so打开
发布于 2017-06-07 10:30:45
我将创建一个可用选项的映射及其相应的顺序,然后根据该映射对要插入的值进行排序。然后,一旦排序,迭代数组,将它们推到目标数组中。或者,您可以将它们连接起来,生成一个新的数组。
const orderMap = {
'status-start': 0,
'status-in-progress': 1,
'status-completed': 2
};
newData.sort((a, b) => {
return orderMap[a] - orderMap[b];
}).forEach(d => {
originalData.push(d);
});显然,您需要更改对象结构等,这只是一个概念的证明。这也是用ES6编写的,所以没有IE,但是可以很容易地用ES5编写。
编辑:我看到您的排序是基于一个子属性,status更新了演示以反映这一点。
https://stackoverflow.com/questions/44409785
复制相似问题