[英]sort javascript array by object attribute
I want to sort my array by lastName attribute. 我想按lastName属性对数组进行排序。 The array stays exactly the same. 数组保持完全相同。 Here is the code: 这是代码:
console.log(clientListArray);
//sort clientList by last name
var sortedtClientListArray = clientListArray.sort(function(obj1, obj2) {
console.log(obj1.lastName);
return obj1.lastName - obj2.lastName;
})
console.log(sortedtClientListArray);
A console.log of my array that stays the same (diving in to the 4th element (index 3)): 我的数组的console.log保持不变(分为第4个元素(索引3)):
0: ct.extend.init
1: ct.extend.init
2: ct.extend.init
3: ct.extend.init
_events: Object
dwelling: "RH07"
firstName: "Alan"
lastName: "Mosby"
letter: "M"
nhi: ""
oid: "2143.10"
parent: function (){return i}
uid: "79fbbf40-5545-4cdc-bc2b-088bf56affc6"
__proto__: r
4: ct.extend.init
5: ct.extend.init
6: ct.extend.init
7: ct.extend.init
length: 8
__proto__: Array[0]
Why is the order of objects in the array not changing? 为什么数组中对象的顺序没有变化?
The full method that it is inside: 它里面的完整方法是:
function onClientClick(e) {
console.log(e.dataItem);
var clientList = e.sender.dataSource._data;
console.log(clientList);
var clientListArray = [];
for(i=0; i < clientList.length; i++){
clientListArray.push(clientList[i]);
}
console.log(clientListArray);
//sort clientList by last name
var sortedtClientListArray = clientListArray.sort(function(obj1, obj2) {
console.log(obj1.lastName);
return obj1.lastName - obj2.lastName;
})
console.log(sortedtClientListArray);
for(i=0; i < clientList.length; i++){
var clientID = clientList[i].oid;
if(clientID == e.dataItem.oid) {
theClient = new Client(clientList[i]);
console.log(i);
console.log(theClient.name);
navigateToSingleClient(true, clientList[i], true, clientList, i);
}
}
}
There are two problems in your code. 您的代码中有两个问题。
1) "OneString"-"SecondString"
will return NaN
. 1) "OneString"-"SecondString"
将返回NaN
。 So ca return that in this situation. 因此,在这种情况下,ca可以将其退回。
2) Array.sort
sorts the given array in place. 2) Array.sort
对给定的数组进行排序。 It returns the sorted array. 它返回排序后的数组。
Say like this 这样说
clientListArray.sort(function(a, b){
if(a.lastName < b.lastName) return -1;
if(a.lastName > b.lastName) return 1;
return 0;
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.