首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按特定顺序创建新数组

按特定顺序创建新数组
EN

Stack Overflow用户
提问于 2017-06-07 10:14:51
回答 4查看 62关注 0票数 1

一旦解决了特定的承诺,我希望循环遍历响应中的每一项,并按特定顺序将它们推入数组中。

  1. status-start
  2. status-in-progress
  3. status-completed

我该怎么做呢?到目前为止,我的代码如下:

代码语言:javascript
复制
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);
      }
    });
  }
});
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-06-07 10:22:40

这个怎么样?

代码语言:javascript
复制
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'))
票数 2
EN

Stack Overflow用户

发布于 2017-06-07 10:20:16

一旦收到答复,请执行以下操作:

代码语言:javascript
复制
    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打开

票数 1
EN

Stack Overflow用户

发布于 2017-06-07 10:30:45

我将创建一个可用选项的映射及其相应的顺序,然后根据该映射对要插入的值进行排序。然后,一旦排序,迭代数组,将它们推到目标数组中。或者,您可以将它们连接起来,生成一个新的数组。

代码语言:javascript
复制
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://jsfiddle.net/k0m2s1yt/2/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44409785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档