javascript - JQuery 是否有类似于 Ruby 的 sort_by 函数

标签 javascript jquery ruby

所以给定一个像这样的项目列表:

item_1 = {id:1, categories: {"category_A" => 1, "category_B" => {"sub_category_A" => 3, "sub_category_B" => 1}}}
item_2 = {id:2, categories: {"category_B" => {"sub_category_A" => 1, "sub_category_B" => 2}}}

其中数值是给定子类别或主类别中的项目顺序。现在,给定子类别或主类别,我想按订单号对项目进行排序。在 Ruby 中我会写...

# Given category_B and sub_category_A
items.sort_by { |i| i.categories["category_B"]["sub_category_A"] }

# which would return...
[item_2, item_1]

还想补充一点,关键是如果一个项目没有相关的传递的category_B和sub_category_A,它应该从输出中完全排除。

最佳答案

你不需要 jQuery; JavaScript 数组有一个 filter() 函数,您可以使用它来限制有效项目,还有一个 sort() 函数,可以将比较函数作为其参数:

var item_1 = {
    id:1, 
    categories: {
        "category_A" : 1,
        "category_B" : {
            "sub_category_A" : 3,
            "sub_category_B" : 1
        }
    }
};
var item_2 = {
    id:2,
    categories: {
        "category_B" : {
            "sub_category_A" : 1,
            "sub_category_B" : 2
        }
    }
};

var item_3 = {
    id: 3,
    categories : {
        "category_A" : 2
    }
};

[item_1,item_2,item_3].filter(function(entry) {
  return entry.categories.category_B;}).sort(function(left, right) {
  return left.categories["category_B"]["sub_category_A"] -
    right.categories["category_B"]["sub_category_A"]
});

// or in the more readable ES6 style
[item_1,item_2,item_3]
    .filter((entry) => entry.categories.category_B)
    .sort((left, right) =>  left.categories["category_B"]["sub_category_A"] - right.categories["category_B"]["sub_category_A"]
);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

关于javascript - JQuery 是否有类似于 Ruby 的 sort_by 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43961064/

相关文章:

javascript - Facebook API Javascript 客户端(无服务器端)

javascript - 在 Javascript 重定向中包含 HTTP 方法?

javascript - Webpack 输出是反向的

javascript - 使用 jQuery 或 JavaScript 使用另一个数组过滤数组

java - Selenium WebDriver jQuery

javascript - 找出素因数时得到的结果为未定义

javascript - 从 4 个按钮使用 jQuery 交换图像 onClick

ruby-on-rails - 为什么 capistrano 3 链接文件在试运行时失败?

ruby - 如何通过不同的变量限制每个 `do` 循环

ruby-on-rails - 没有 Devise 的 Omniauth 和 google oauth2 错误 - Rails 4