Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中对JSON进行排序_Javascript_Json_Sorting - Fatal编程技术网

在javascript中对JSON进行排序

在javascript中对JSON进行排序,javascript,json,sorting,Javascript,Json,Sorting,我有一个JSON对象的形式 [ { "Var1": "text1", "var2": "text2", "var3": "text3", "Saving": "integer1" }, { "Var1": "text11", "var2": "text22", "var3": "text33", "Saving": "integer2"

我有一个JSON对象的形式

[
    {
        "Var1": "text1",
        "var2": "text2",
        "var3": "text3",
        "Saving": "integer1"
    },
    {
        "Var1": "text11",
        "var2": "text22",
        "var3": "text33",
        "Saving": "integer2"
    },
    {
        "Var1": "text111",
        "var2": "text222",
        "var3": "text333",
        "Saving": "text"
    }
]
JSON的“Saving”变量包含文本和整数。我想对JSON进行排序,以使使用最大整数值保存的内容是紧跟在前面的文本。
我正在使用javascript

您可以使用lodash的
排序方法:

_.sortBy([1,2,3],函数(num){return Math.sin(num);}); // → [3,1,2]

_.sortBy([1,2,3],函数(num){returnthis.sin(num);},Math); // → [3,1,2]

//使用“u.pulk”回调速记 _.sortBy([‘香蕉’、‘草莓’、‘苹果’、‘长度’); // → [‘苹果’、‘香蕉’、‘草莓’]

如果无法包含lodash,请在此处查看其源代码,了解如何实现:


您可以使用lodash的
排序方法:

_.sortBy([1,2,3],函数(num){return Math.sin(num);}); // → [3,1,2]

_.sortBy([1,2,3],函数(num){returnthis.sin(num);},Math); // → [3,1,2]

//使用“u.pulk”回调速记 _.sortBy([‘香蕉’、‘草莓’、‘苹果’、‘长度’); // → [‘苹果’、‘香蕉’、‘草莓’]

如果无法包含lodash,请在此处查看其源代码,了解如何实现:


数组的元素可以按数组排序。排序方法。您可以将自定义函数传递到方法中,以按其元素的任何属性对其进行排序。

数组的元素可以按Array.sort方法进行排序。您可以将自定义函数传递到方法中,以按其元素的任何属性对其进行排序

[
    {
        "Var1": "text1",
        "var2": "text2",
        "var3": "text3",
        "Saving": "a7"
    },
    {
        "Var1": "text11",
        "var2": "text22",
        "var3": "text33",
        "Saving": 2
    },
    {
        "Var1": "text111",
        "var2": "text222",
        "var3": "text333",
        "Saving": "n3"
    }
].sort(function(a,b){
    var aNum = parseInt(a.Saving, 10);
    var bNum = parseInt(b.Saving, 10);
    if(isNaN(aNum) && isNaN(bNum)){
        return a.Saving > b.Saving;
    }
    if(isNaN(aNum)){
     return true;
    }
    if(isNaN(bNum)){
        return false;
    }
    return aNum > bNum;
});


您想按“保存”属性排序的可能重复项?@PhilippeBoissonneault不是。我投票重新打开它,因为这个问题的答案比可能重复项的答案简单得多。您想按“保存”排序的可能重复项属性?@PhilippeBoissonneault不,不是。我投票重新打开它,因为这个问题的答案比可能重复的答案简单得多。但是属性是整数和整数的混合体text@user2129794,把它们都当作文本处理。@RayCheng你能写一个bried代码来帮助我更好地使用@Bluetoft解决方案吗?但是这个属性是整数和text@user2129794,把它们都当作文本处理。@RayCheng你能写一个bried代码来帮助我吗?使用@Bluetoft解决方案。你可能应该为
parseInt
指定基数10,因为在某些浏览器中默认为八进制。的确。。。编辑制作。谢谢@raycheng您可能应该为
parseInt
指定基数10,因为在某些浏览器中默认为八进制。。。编辑制作。谢谢@RayCheng
[
    {
        "Var1": "text1",
        "var2": "text2",
        "var3": "text3",
        "Saving": "a7"
    },
    {
        "Var1": "text11",
        "var2": "text22",
        "var3": "text33",
        "Saving": 2
    },
    {
        "Var1": "text111",
        "var2": "text222",
        "var3": "text333",
        "Saving": "n3"
    }
].sort(function(a,b){
    var aNum = parseInt(a.Saving, 10);
    var bNum = parseInt(b.Saving, 10);
    if(isNaN(aNum) && isNaN(bNum)){
        return a.Saving > b.Saving;
    }
    if(isNaN(aNum)){
     return true;
    }
    if(isNaN(bNum)){
        return false;
    }
    return aNum > bNum;
});