У меня эта функция в NodeJS, где я фильтровать элементы:Изменения положения элемента массив к началу
// 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]);
Теперь, в последнем методе фильтра я найти элементы с ID от LIS (результат [4]) и добавить к ним свойство «продвигается».
Я также хотел перенести все продвигаемые события непосредственно в верхнюю часть массива, так как у меня есть свой индекс в массиве вместо того, чтобы запустить другой цикл в это задание.
Как я могу это сделать? Потому что использование сплайсинга для меня не сработало
Также любое предложение о качестве этой функции?
Спасибо :)
Можете ли вы показать простой набор данных с вашей последовательностью 'filter.sort.filter' вместе с ожидаемым выходом? – naomik
Ваша функция сортировки должна возвращать '-1',' 0' и '1', если она будет работать надежно – naomik
' .sort' мутирует входной массив, так что вы знаете – naomik