Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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和loadash对对象键进行多标准排序_Javascript_Sorting_Object_Lodash_Array Multisort - Fatal编程技术网

使用Javascript和loadash对对象键进行多标准排序

使用Javascript和loadash对对象键进行多标准排序,javascript,sorting,object,lodash,array-multisort,Javascript,Sorting,Object,Lodash,Array Multisort,我正在尝试使用多个条件、Javascript和。我不必使用Lodash,但我认为这会更容易。在这一点上,我愿意接受一切可行的办法。非常感谢您的帮助!!先谢谢你 下面是我正在使用的一个示例对象: var对象={ “148295945589000200_149091156236000910_过滤器”:“一些值”, “148295945589000200_149091156236000910_过滤器类型”:“某些值”, “148295945589000200_过滤器”:“asdf”, “149098

我正在尝试使用多个条件、Javascript和。我不必使用Lodash,但我认为这会更容易。在这一点上,我愿意接受一切可行的办法。非常感谢您的帮助!!先谢谢你

下面是我正在使用的一个示例对象:

var对象={
“148295945589000200_149091156236000910_过滤器”:“一些值”,
“148295945589000200_149091156236000910_过滤器类型”:“某些值”,
“148295945589000200_过滤器”:“asdf”,
“149098531921500909_源”:“js.content_id”,
“149098531921500909_filtertype”:“某些_值”,
“148295944269000199_settovar”:”,
“148295945589000200_1490998530604100908_源”:“js.content_类型”,
“148295945589000200_过滤器类型”:“已定义”,
“148295945589000200_源”:“js.content_类型”,
“148295944269000199_settotext”:“adsf”,
“148295945589000200_1490998530604100908_过滤器”:“一些值”,
“1490099546962400202_1490099548423700203_过滤器类型”:“某些_值”,
“1490995462400202_1490995448423700203_过滤器”:“一些值”,
“148295945589000200_1490998530604100908_过滤器类型”:“某些值”,
“148295944269000199_设置选项”:“文本”,
“148295944269000199_集”:“js.content_name”,
“1490995462400202_源”:“js.acme_id”,
“149099546262400202_14909954842370023_来源”:“js.acme_页面”,
“1490995462400202_过滤器”:”,
“149098531921500909_过滤器”:“一些值”,
“1490995462400202_过滤器类型”:“已定义”,
“148295945589000200_1490991556236000910_来源”:“js.content_名称”
}
我们可以通过以下方式解决此问题:

  • 使用将对象转换为键值对集合
  • 使用以下命令按键对集合进行排序:
    • 用一个
      '
      分隔符拆分键字符串,并得到它的
      长度
    • 用拆分的
      长度
      替换键字符串中第一个出现的
      字符
  • 用于将已排序的集合转换为对象

  • var对象={
    “148295945589000200_149091156236000910_过滤器”:“一些值”,
    “148295945589000200_149091156236000910_过滤器类型”:“某些值”,
    “148295945589000200_过滤器”:“asdf”,
    “149098531921500909_源”:“js.content_id”,
    “149098531921500909_filtertype”:“某些_值”,
    “148295944269000199_settovar”:”,
    “148295945589000200_1490998530604100908_源”:“js.content_类型”,
    “148295945589000200_过滤器类型”:“已定义”,
    “148295945589000200_源”:“js.content_类型”,
    “148295944269000199_settotext”:“adsf”,
    “148295945589000200_1490998530604100908_过滤器”:“一些值”,
    “1490099546962400202_1490099548423700203_过滤器类型”:“某些_值”,
    “1490995462400202_1490995448423700203_过滤器”:“一些值”,
    “148295945589000200_1490998530604100908_过滤器类型”:“某些值”,
    “148295944269000199_设置选项”:“文本”,
    “148295944269000199_集”:“js.content_name”,
    “1490995462400202_源”:“js.acme_id”,
    “149099546262400202_14909954842370023_来源”:“js.acme_页面”,
    “1490995462400202_过滤器”:”,
    “149098531921500909_过滤器”:“一些值”,
    “1490995462400202_过滤器类型”:“已定义”,
    “148295945589000200_1490991556236000910_来源”:“js.content_名称”
    };
    var结果=(对象)
    .toPairs()
    .sortBy(功能(对){
    返回对[0]。替换(//,对[0]。拆分(“/)。长度);
    })
    .fromPairs()
    .value();
    控制台日志(结果)
    
    body>div{min height:100%;top:0;}
    我们可以通过以下方式解决此问题:

  • 使用将对象转换为键值对集合
  • 使用以下命令按键对集合进行排序:
    • 用一个
      '
      分隔符拆分键字符串,并得到它的
      长度
    • 用拆分的
      长度
      替换键字符串中第一个出现的
      字符
  • 用于将已排序的集合转换为对象

  • var对象={
    “148295945589000200_149091156236000910_过滤器”:“一些值”,
    “148295945589000200_149091156236000910_过滤器类型”:“某些值”,
    “148295945589000200_过滤器”:“asdf”,
    “149098531921500909_源”:“js.content_id”,
    “149098531921500909_filtertype”:“某些_值”,
    “148295944269000199_settovar”:”,
    “148295945589000200_1490998530604100908_源”:“js.content_类型”,
    “148295945589000200_过滤器类型”:“已定义”,
    “148295945589000200_源”:“js.content_类型”,
    “148295944269000199_settotext”:“adsf”,
    “148295945589000200_1490998530604100908_过滤器”:“一些值”,
    “1490099546962400202_1490099548423700203_过滤器类型”:“某些_值”,
    “1490995462400202_1490995448423700203_过滤器”:“一些值”,
    “148295945589000200_1490998530604100908_过滤器类型”:“某些值”,
    “148295944269000199_设置选项”:“文本”,
    “148295944269000199_集”:“js.content_name”,
    “1490995462400202_源”:“js.acme_id”,
    “149099546262400202_14909954842370023_来源”:“js.acme_页面”,
    “1490995462400202_过滤器”:”,
    “149098531921500909_过滤器”:“一些值”,
    “1490995462400202_过滤器类型”:“已定义”,
    “148295945589000200_1490991556236000910_来源”:“js.content_名称”
    };
    var结果=(对象)
    .toPairs()
    .sortBy(功能(对){
    返回对[0]。替换(//,对[0]。拆分(“/)。长度);
    })
    .fromPairs()
    .value();
    控制台日志(结果)
    
    body>div{min height:100%;top:0;}

    分拣顺序是什么?是否有任何规格?你把代码弄乱了:(嗨,Aravind,谢谢你的回答。代码片段在我这边看起来不错,但可能没有正确呈现。以下是我要寻找的标准:根据每个键中的前18个数字对对象进行排序。如果只有一个数字块,请先列出该数字块,然后按顺序列出序列中的第二个数字块。然后,按键的剩余字母部分排序。对对象排序或对数组排序??您的示例仅包含一个对象对对象进行排序
    var result = _(object)
      .toPairs()
      .sortBy(function(pair) {
        return pair[0].replace(/_/, pair[0].split('_').length);
      })
      .fromPairs()
      .value();