我有一个对象列表,希望按照类型为字符串的字段attr
进行排序。我尝试使用-
。
list.sort(function (a, b) {
return a.attr - b.attr
})
但是我发现在 JavaScript 中,-
似乎不能用于字符串。那么如何根据一个字符串类型的属性对对象列表进行排序呢?
但我发现JavaScript中-
不能用于字符串。如何基于字符串类型的属性对对象列表进行排序?
我有一个对象列表,希望按照类型为字符串的字段attr
进行排序。我尝试使用-
。
list.sort(function (a, b) {
return a.attr - b.attr
})
但是我发现在 JavaScript 中,-
似乎不能用于字符串。那么如何根据一个字符串类型的属性对对象列表进行排序呢?
但我发现JavaScript中-
不能用于字符串。如何基于字符串类型的属性对对象列表进行排序?
应该有升序和降序的函数。
if (order === 'asc') {
return a.localeCompare(b);
}
return b.localeCompare(a);
使用sort()时不要加任何-
或<
const areas = ['hill', 'beach', 'desert', 'mountain']
console.log(areas.sort())
// To print in descending way
console.log(areas.sort().reverse())
list.sort(function(item1, item2){
return +(item1.attr > item2.attr) || +(item1.attr === item2.attr) - 1;
})
它们的工作样例:
+('aaa'>'bbb')||+('aaa'==='bbb')-1
+(false)||+(false)-1
0||0-1
-1
+('bbb'>'aaa')||+('bbb'==='aaa')-1
+(true)||+(false)-1
1||0-1
1
+('aaa'>'aaa')||+('aaa'==='aaa')-1
+(false)||+(true)-1
0||1-1
0
item1.attr - item2.attr
所以,假设这些是数字(即item1.attr =“1”,item2.attr =“2”),您仍然可以使用“ ===”运算符(或其他严格的评估器),前提是您确保类型。以下应该可以工作:
return parseInt(item1.attr) - parseInt(item2.attr);
<!doctype html>
<html>
<body>
<p id = "myString">zyxtspqnmdba</p>
<p id = "orderedString"></p>
<script>
var myString = document.getElementById("myString").innerHTML;
orderString(myString);
function orderString(str) {
var i = 0;
var myArray = str.split("");
while (i < str.length){
var j = i + 1;
while (j < str.length) {
if (myArray[j] < myArray[i]){
var temp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = temp;
}
j++;
}
i++;
}
var newString = myArray.join("");
document.getElementById("orderedString").innerHTML = newString;
}
</script>
</body>
</html>
var str = ['v','a','da','c','k','l']
var b = str.join('').split('').sort().reverse().join('')
console.log(b)