Baseline Widely available
sort()
æ¹æ³æ*åå°ï¼in placeï¼*å°ä¸åé£åçææå
ç´ é²è¡æåºï¼ä¸¦å峿¤é£åãæåºä¸ä¸å®æ¯ç©©å®çï¼stableï¼ãé è¨çæåºé åºæ¯æ ¹æå串ç Unicode 編碼ä½ç½®ï¼code pointsï¼èå®ã
ç±æ¼ä¾è³´å·è¡ç°å¢ç實ä½ï¼æä»¥ä¸¦ä¸è½ä¿èæåºçæéå空éè¤é度ã
å試ä¸ä¸const months = ["March", "Jan", "Feb", "Dec"];
months.sort();
console.log(months);
// Expected output: Array ["Dec", "Feb", "Jan", "March"]
const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// Expected output: Array [1, 100000, 21, 30, 4]
èªæ³
arr.sort([compareFunction])
忏
compareFunction
鏿æ§
æå®ä¸åå½å¼ä¾å®ç¾©æåºé åºãåå¦çç¥æ¤åæ¸ï¼é£åå°æ ¹æååå ç´ è½çºå串å¾çæ¯ä¸ååå ä¹ Unicode 編碼ä½ç½®å¼é²è¡æåºã
æåºå¾çé£åãè«æ³¨ææ¤çºåå°ï¼in placeï¼é²è¡æåºéçé£åï¼ä¸¦ä¸ä¸æ¯åé£åçæ·è²ã
æè¿°å¦æ compareFunction
æ²æè¢«æç¨ï¼å
ç´ å°è¢«è½æçºå串並以 Unicode 編碼ä½ç½®é²è¡æ¯è¼ä¾æåºãèä¾ä¾èªªï¼"Banana" æè¢«æå¨ "cherry" ä¹åã卿¸å¼æåºä¸ï¼9 æå¨ 80 åé¢ï¼ä½å çºæ¸åè¢«è½ææå串ï¼å¨ Unicode é åºä¸ "80" æå¨ "9" çåé¢ã
妿 compareFunction
被æç¨ï¼é£åå
ç´ åå°æ ¹ææ¯è¼å½å¼ä¹åå³å¼ä¾æåºã妿 a
å b
çºè¢«æ¯è¼ä¹å
©å
ç´ ï¼åï¼
compareFunction(a, b)
çåå³å¼å°æ¼ 0ï¼åææ a
æå¨å°æ¼ b
ä¹ç´¢å¼çä½ç½®ï¼å³ a
æå¨ b
åé¢ãcompareFunction(a, b)
åå³ 0ï¼å a
è b
ç䏿æ¹è®å½¼æ¤çé åºï¼ä½æèå
¶ä»å
¨é¨çå
ç´ æ¯è¼ä¾æåºãå註ï¼ECMAscript æ¨æºä¸¦ä¸ä¿èéåè¡çºï¼å æ¤ä¸æ¯ææç覽å¨ï¼å¦ Mozilla çæ¬å¨ 2003 以åï¼é½éµå®æ¤è¡çºãcompareFunction(a, b)
çåå³å¼å¤§æ¼ 0ï¼åææ b
æå¨å°æ¼ a
ä¹ç´¢å¼çä½ç½®ï¼å³ b
æå¨ a
åé¢ãcompareFunction(a, b)
å¨çµ¦äºä¸çµç¹å®å
ç´ a å b çºæ¤å½æ¸ä¹å
©å¼æ¸æå¿
é 總æ¯åå³ç¸åçå¼ãè¥åå³å¼ä¸ä¸è´ï¼æåºé åºåçº undefinedãæä»¥ï¼æ¯è¼å½å¼ææ¯ä»¥ä¸å½¢å¼ï¼
function compare(a, b) {
if (卿æåºæ¨æºä¸ a å°æ¼ b) {
return -1;
}
if (卿æåºæ¨æºä¸ a å¤§æ¼ b) {
return 1;
}
// a å¿
é çæ¼ b
return 0;
}
çºäºæ¯è¼æ¸åè䏿¯åä¸²ï¼æ¯è¼å½å¼å¯ä»¥å
å
å©ç¨ a
æ¸ b
ã以ä¸å½å¼å°æååªæåºé£åï¼
function compareNumbers(a, b) {
return a - b;
}
sort
æ¹æ³å¯ä»¥ç´æ¥ä½¿ç¨å½å¼éç®å¼ï¼ä»¥åéå
ï¼closuresï¼ï¼ï¼
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function (a, b) {
return a - b;
});
console.log(numbers);
// [1, 2, 3, 4, 5]
ç©ä»¶å¯ä»¥æç §å ¶ä¸ä¸å屬æ§çå¼ä¾æåºã
var items = [
{ name: "Edward", value: 21 },
{ name: "Sharpe", value: 37 },
{ name: "And", value: 45 },
{ name: "The", value: -12 },
{ name: "Magnetic", value: 13 },
{ name: "Zeros", value: 37 },
];
// sort by value
items.sort(function (a, b) {
return a.value - b.value;
});
// sort by name
items.sort(function (a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
});
ç¯ä¾ 建ç«ã顯示åæåºä¸åé£å
ä¸åç¯ä¾å»ºç«äºååé£åä¸¦é¡¯ç¤ºå ¶åæ¬é£åå §å®¹ãåé²è¡æåºãæ¸åé£åå ä¸ä½¿ç¨æ¯è¼å½å¼ï¼compare functionï¼ä¾æåºï¼æ¥èæä¾ææ¯è¼å½å¼é²è¡æåºã
var stringArray = ["Blue", "Humpback", "Beluga"];
var numericStringArray = ["80", "9", "700"];
var numberArray = [40, 1, 5, 200];
var mixedNumericArray = ["80", "9", "700", 40, 1, 5, 200];
function compareNumbers(a, b) {
return a - b;
}
console.log("stringArray:", stringArray.join());
console.log("Sorted:", stringArray.sort());
console.log("numberArray:", numberArray.join());
console.log("Sorted without a compare function:", numberArray.sort());
console.log("Sorted with compareNumbers:", numberArray.sort(compareNumbers));
console.log("numericStringArray:", numericStringArray.join());
console.log("Sorted without a compare function:", numericStringArray.sort());
console.log(
"Sorted with compareNumbers:",
numericStringArray.sort(compareNumbers),
);
console.log("mixedNumericArray:", mixedNumericArray.join());
console.log("Sorted without a compare function:", mixedNumericArray.sort());
console.log(
"Sorted with compareNumbers:",
mixedNumericArray.sort(compareNumbers),
);
éåç¯ä¾å°ç¢çä¸åçµæãå°±å¦çµææç¤ºï¼ç¶ä½¿ç¨æ¯è¼å½å¼æï¼æ¸åæè¢«æ£ç¢ºçæåºï¼ä¸ç®¡æ¯æ¸å鿝æ¸åå串ã
stringArray: Blue,Humpback,Beluga Sorted: Beluga,Blue,Humpback numberArray: 40,1,5,200 Sorted without a compare function: 1,200,40,5 Sorted with compareNumbers: 1,5,40,200 numericStringArray: 80,9,700 Sorted without a compare function: 700,80,9 Sorted with compareNumbers: 9,80,700 mixedNumericArray: 80,9,700,40,1,5,200 Sorted without a compare function: 1,200,40,5,700,80,9 Sorted with compareNumbers: 1,5,9,40,80,200,700æåºé ASCII åå
çºäºæåé ASCII åå
ï¼å³éé³ç¯åå
ï¼eãéãèãaãä ççï¼ï¼éè±èªå串ï¼å©ç¨ String.localeCompare
ãæ¤å½å¼å°æ¯è¼éäºåå
ï¼æä»¥çµæå°æé¡¯ç¤ºæ£ç¢ºçé åºã
var items = ["réservé", "premier", "cliché", "communiqué", "café", "adieu"];
items.sort(function (a, b) {
return a.localeCompare(b);
});
// items is ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']
æåº map
compareFunction
å¯ä»¥è¢«é£åä¸çååå
ç´ å¤æ¬¡å¼å«ã便 compareFunction
çç¹æ§ï¼éå°æç¢ç大ééç®ãè¶å¤å
ç´ è¦æåº compareFunction
å°±è¶å¤å·¥ä½è¦åï¼å æ¤é¸æä½¿ç¨ map 便åä¹å°±æ¯ä¸åæ´ææºç鏿ã使³çºå
è¿ä»£é£å䏿¬¡ä¾åå¾æåºææéçå¼è³æ«æçé£åï¼ä¸¦å°æ¤è¨æé£åé²è¡æåºãç¶å¾åè¿ä»£è¨æé£åä¾å°æ£ç¢ºé åºä¹å¼æ¾å
¥åå§é£åä¸ã
// the array to be sorted
var list = ["Delta", "alpha", "CHARLIE", "bravo"];
// temporary array holds objects with position and sort-value
var mapped = list.map(function (el, i) {
return { index: i, value: el.toLowerCase() };
});
// sorting the mapped array containing the reduced values
mapped.sort(function (a, b) {
if (a.value > b.value) {
return 1;
}
if (a.value < b.value) {
return -1;
}
return 0;
});
// container for the resulting order
var result = mapped.map(function (el) {
return list[el.index];
});
è¦ç¯ ç覽å¨ç¸å®¹æ§ åè¦
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4