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