javascript使用java对象数组_javascript – 基于java脚本中嵌套对象数组中的键对列表进行排序的最佳方法...
发布日期:2021-06-24 15:11:09 浏览次数:2 分类:技术文章

本文共 984 字,大约阅读时间需要 3 分钟。

所以你的主要问题是你需要在匹配属性的内部项数组中找到一个对象.因为您不知道它将位于哪个对象上.请注意,这里的限制是您总是要在第一个找到的实例上进行比较,即使item中有多个对象拥有比较属性.开始:

var list = [

{"item":[{a:5,b2:1}]}

];

function comparatorMaker(prop) {

var findVal = function(acc,obj) {

return acc || obj[prop];

};

return function(x,y) {

if (!x.item && !y.item) return 0;

if (x.item && !y.item) return -1;

if (!x.item && y.item) return 1;

var xVal = x.item.reduce(findVal,null) || 0;

var yVal = y.item.reduce(findVal,null) || 0;

return (xVal === yVal) ? 0 : (xVal > yVal) ? 1 : -1;

};

}

var myComparator = comparatorMaker('a');

list.sort(myComparator); // element 1,element 2,element 0

这里发生的是我们为给定的属性名称生成一个唯一的比较器函数.它现在适用于任何:

var myComparator = comparatorMaker('b1');

list.sort(myComparator); // element 0,element 1,element 2

我们在制作比较器函数时定义的findVal函数与item.reduce一起使用.缩减迭代item的内容并返回已找到的值或查找当前检查元素的值.实际上,这可以更有效地完成,因为即使我们立即找到匹配项,我们最终也会迭代项中的每个元素,但是需要更多行代码才能证明这一点,所以我保持简单.

比较器本身应返回1,0或-1,具体取决于是否发现结果值更大,更小,更小或更小.比较器函数的前几行只是处理列表中的元素实际上没有item属性的情况,因为你对这个问题的表达方式,听起来有时可能就是这种情况.

转载地址:https://blog.csdn.net/weixin_33572836/article/details/114547424 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java speex转码_JAVA版-微信语音.speex转.wav
下一篇:java multithread_Java MultiThread学习笔记

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月12日 13时01分04秒