首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将元素数组位置更改为顶部

将元素数组位置更改为顶部
EN

Stack Overflow用户
提问于 2016-05-30 09:23:51
回答 1查看 88关注 0票数 0

我在NodeJS中有一个函数,其中我过滤元素:

代码语言:javascript
运行
复制
// Remove duplicates and expired
var data = (result[0].concat(result[1]).concat(result[3])).filter((event, index, self) => self.findIndex((t) => {
                    var eventDate = new Date(event.start_time);
                    return t.id === event.id && todayDate.setHours(0,0,0,0) <= eventDate.setHours(0,0,0,0);
                }) === index)

                // Remove invalid
                .filter(function(event){
                    if(~this.indexOf(event.id)){
                        return false;
                    } else {
                        return true;
                    }
                }, result[2])

                // Sort array by date
                .sort(function(a,b) {
                    return new Date(a.start_time).getTime() - new Date(b.start_time).getTime();
                })

                // Filter promoted
                // PROBLEM
                .filter(function(event){
                    if(~this.indexOf(event.id)){
                        event.promoted = true;
                        console.log(filtered.indexOf(event));
                        // MOVE THIS TO TOP
                    }
                    return true;
                }, result[4]);

现在,在最后一个filter方法中,我从lis(结果4)中找到带有ID的元素,并将属性“提升”添加到它们中。

我还想立即将所有提升的事件移到数组的顶部,因为我将它们的索引放在数组中,而不是向这个作业触发另一个循环。

我该怎么做?因为我用剪接不起作用

对这项功能的质量也有什么建议吗?

谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-30 10:00:10

不应该使用filter来更改数组的元素。这方面有map

如果您想要基于多个属性对元素进行排序,可以这样做。

代码语言:javascript
运行
复制
//clean
const invalid = result[2],
    promoted = result[4];

var data = result[0]
   .concat(result[1], result[3])
   .filter(dedup) //remove duplicated
   //set promoted flag
   .map(event => {
       event.promoted = promoted.indexOf(event.id) > -1
       return event
   })
   //sort by promoted then by start_time  
   .sort((a, b) => (b.promoted - a.promoted) || (a.start_time - b.start_time))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37522082

复制
相关文章

相似问题

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