【问题标题】:Jquery array filtering - grep()?Jquery 数组过滤 - grep()?
【发布时间】:2010-11-15 16:26:07
【问题描述】:

如何使用 jquery 自己的函数对数组进行排序,如下所示?我认为 grep() 是我应该看的那个?

谢谢!

数组:

array (

    array(
        'id' => 0,
        'name' => 'myName',
        'weight' => 100  
    );

    array(
        'id' => 1,
        'name' => 'myName2',
        'weight' => 150,
    );

);

编辑:这是一个用于澄清事情的 PHP 数组 - 我不完全确定如何编写正确的 javascript (JSON?) 数组?

【问题讨论】:

  • 嗯,是的。这是一个 PHP 数组,出于说明目的尚未转换为 JSON。
  • 你到底想做什么?排序还是过滤?你能澄清你的问题吗?
  • 嗯。我想像“MYSQL GET WHERE”查询一样过滤它

标签: jquery arrays sorting


【解决方案1】:

首先,我假设您实际上在谈论一个看起来像这样的 Javascript 数组:

var myArray = [
    {
        id: 0,
        name: 'myName',
        weight: 100
    },
    {
        id: 1,
        name: 'myName2',
        weight: 150
    }
]

然后您可以在此数组上调用本机 Javascript 函数 sort()。在这种情况下,您需要提供函数回调。这需要使用语法function (a, b) 定义。 ab 是数组中的元素。如果a 在数组中的排名应该高于b,则需要返回-1,如果排名应该较低,则需要返回1,如果它们相同,则需要返回0

如果您想按重量降序对它们进行排序,您可以执行以下操作:

myArray.sort(function(a, b) {
    return b.weight - a.weight;
});

【讨论】:

  • 从服务器传送这个已经排序的数组可能会更好/更便宜,尤其是在排序复杂的情况下。
【解决方案2】:

没有使用 jQuery 对数组进行排序的方法。你为什么不直接使用Array.prototype.sort 呢?它是本机代码,您可以向它传递一个函数来比较任何嵌套数组的值。

var myarr = [
    {id: 3, foo: 'bax'},
    {id: 1, foo: 'baz'},
    {id: 2, foo: 'bay'}
];

// Sort by id
myarr = myarr.sort(function(x, y) {
    return x.id >= y.id;
});

【讨论】:

    猜你喜欢
    • 2014-02-05
    • 1970-01-01
    • 2012-04-25
    • 2011-12-16
    • 2012-01-21
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多