【问题标题】:Javascript sort items excluding some specific itemsJavascript 对项目进行排序,不包括某些特定项目
【发布时间】:2018-08-02 19:12:21
【问题描述】:

我正在尝试对一些项目进行排序(排序地图),我可以成功排序,但我想根据它的属性排除一些项目

现在我根据属性-价格这样排序

 return (product.attr('active') !== 'f'
                }).sort(function(pA,pB){
                  return pB.attr('price') - pA.attr('price'); });

我想跳过一些基于attr('product_id') 的项目,所以列出的product_id 不会基于排序,而是首先返回。

return (product.attr('active') !== 'f'
      }).sort(function(pA,pB){
   return pB.attr('price') - pA.attr('price'); }).except(pA.attr('product_id') == 5677));

类似上面的东西,显然除了函数不存在。

有没有一种方法可以根据 id 等属性从排序中排除某些项目?

数据

Map
active
:
true
brand_id
:
1
categories
:
Map(2) ["All Products", "Snacks", _cid: ".map232", _computedAttrs: {…}, __bindEvents: {…}, _comparatorBound: false, _bubbleBindings: {…}, …]
channel_id
:
1
created
:
"2017-08-14T19:16:56.148029-07:00"
description
:
"Breakfast"
image
:
"/media/333807.png"
name
:
"Breakfast"
price
:
"1"
product_id
:
5677

【问题讨论】:

  • 你能告诉我们你的数据吗?
  • 请提供您输入的示例和您的预期结果。
  • 数据已发布@void
  • 现在可以格式化了吗?
  • 您是否有多个项目要排序到顶部?

标签: javascript jquery ecmascript-6 canjs


【解决方案1】:

您可以使用支票将想要的项目排序到前面并返回支票的增量。

var array = [{ product_id: 1, price: 1 }, { product_id: 2, price: 3 }, { product_id: 3, price: 4 }, { product_id: 4, price: 1 }, { product_id: 5, price: 8 }, { product_id: 5677, price: 1 }];

array.sort(function (a, b) {
    return (b.product_id === 5677) - (a.product_id === 5677) || b.price - a.price;
});

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

不止一个 id 用于排序到顶部

var array = [{ product_id: 1, price: 1 }, { product_id: 2, price: 3 }, { product_id: 3, price: 4 }, { product_id: 4, price: 1 }, { product_id: 5, price: 8 }, { product_id: 5677, price: 1 }];
    topIds = [5677, 2]

array.sort(function (a, b) {
    return topIds.includes(b.product_id) - topIds.includes(a.product_id) || b.price - a.price;
});

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

  • 如何使它适用于多个 product_id 的?我需要排除多个product_id
  • 尽管price 是标准的降序排序,但最上面的项目是否需要特殊排序?
  • 不,排名靠前的项目不需要特殊排序。这是否适用于其他按名称、日期和其他排序方法的降序排序?
  • 你可以在价格排序后面用逻辑或链接其他排序标准。
  • 它排除了那些用于排序的项目,当然,但它是最后退回的,我需要先退回它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 2011-06-17
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多