有没有办法在javascript中订购这些(alal SELECT * FROM this ORDERBY ....)。因此,如果我只是想将新列表元素从对象追加到DOM,但想控制事物的顺序。
var example = [
{id:1, data: { val1: 'val1', val2: 'val2'}, orderById: 313},
{id:2, data: { val1: 'val1', val2: 'val2'}, orderById: 312},
];
var buildString = '';
for ( var i = 0; i < example.length; i++ ) {
// wondering if there is another approach so that i could control the order as I build the string
buildString += "<li class='example-class'>" + example[i].data.val1 + "</li>";
}
$("#some-ul").html('').append(buildString);
因此,如果有完全更好的方法来实现这个想法,我有兴趣学习...
数组有一个称为sort的方法,它可以完全按照您的期望进行操作。它对数组进行排序。默认情况下,这是简单地通过比较元素来完成的。但是,在这里您正在对对象数组进行排序,这些对象通常是无法排序的。因此,您必须告诉脚本如何比较项目,如下所示:
example.sort(function(a,b) {
return a.id - b.id;
});
引擎需要进行的每个比较都会调用您的函数(根据内部使用的排序算法而有所不同,对我们来说并不重要)。a
以及b
目前正在比较的元素。该函数必须返回:
a
认为小于b
b
认为大于b
在这种情况下,我将表达式简化为a.id - b.id
。这是因为根据基本数学:
a.id
小于b.id
,则结果为负a.id
大于b.id
,则结果为正希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句