javascript使用java对象数组_javascript – 基于java脚本中嵌套对象数组中的键对列表进行排序的最佳方法...

这篇博客介绍了一种在JavaScript中查找并比较数组内对象属性的方法。通过使用reduce方法和自定义比较函数,实现了根据特定属性对包含对象的数组进行排序。比较器函数能够处理元素没有item属性的情况,并在找到第一个匹配属性时返回比较结果。博客还提到,虽然这种方法可能会遍历整个item数组,但在某些情况下可以优化以提高效率。
摘要由CSDN通过智能技术生成

所以你的主要问题是你需要在匹配属性的内部项数组中找到一个对象.因为您不知道它将位于哪个对象上.请注意,这里的限制是您总是要在第一个找到的实例上进行比较,即使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属性的情况,因为你对这个问题的表达方式,听起来有时可能就是这种情况.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值