我有一个JS对象,带有另一个JS物体的内部数组。内部onw类似
function outerObj()
{
this.items = new Array();
this.clear = function () {
this.items = new Array();
}
function __item(v1, v2, v3, v4) {
this.Val_1 = v1;
this.Val_2 = v2;
this.Val_3 = v3;
this.Val_4 = v4;
}
this.add = function (vA, vB, vC, vD) {
this.items.push( new __item(vA, vB, vC, vD) );
}
...
}
数组是通过SPServices getListItems()
调用加载的,对生成的XML使用.each( . . . )
。结果是有序的(<OrderBy>
),但结果是常见的刺激:
1
10
11
2
21
3
42A
42B
我无法摆脱包含字母(这是真实世界物品的名称),而我希望排序为
1
2
3
10
11
21
42A
42B
建议?
只需使用javascript array.sort()
代码如下:
this.items.sort()
这里有一个链接:Javascript排序引用
实际上,以利沙,它看起来是这样的。
items.sort(function (v1, v2) {
/* algorythm here */
});
算法是我可以添加智能的地方,它知道数组包含的是对象,而不是值,并且我可以真正检查排序所依据的属性。
事实上,我可以编写一个外部函数,并从匿名函数中调用它。
感谢以利沙;这让我步入正轨。
我在这里回答,这样我就可以使用格式化答案的能力。但以利沙应该得到这一点的赞扬。
顺便说一句,函数需要返回一个负数、零或正数。返回内容的符号表示传入的两个参数之间的排序顺序。