æ°ç»æä¾çæ¹æ³æå¾å¤ãä¸ºäºæ¹ä¾¿èµ·è§ï¼å¨æ¬ç« ä¸ï¼æä»¬å°æç»è®²è§£ã
æ·»å /ç§»é¤æ°ç»å ç´
æä»¬å·²ç»å¦äºä»æ°ç»çé¦ç«¯æå°¾ç«¯æ·»å åå é¤å ç´ çæ¹æ³ï¼
arr.push(...items)ââ ä»å°¾ç«¯æ·»å å ç´ ï¼arr.pop()ââ ä»å°¾ç«¯æåå ç´ ï¼arr.shift()ââ ä»é¦ç«¯æåå ç´ ï¼arr.unshift(...items)ââ ä»é¦ç«¯æ·»å å ç´ ã
è¿éè¿æå ¶ä»å ç§æ¹æ³ã
splice
å¦ä½ä»æ°ç»ä¸å é¤å ç´ ï¼
æ°ç»æ¯å¯¹è±¡ï¼æä»¥æä»¬å¯ä»¥å°è¯ä½¿ç¨ deleteï¼
let arr = ["I", "go", "home"];
delete arr[1]; // remove "go"
alert( arr[1] ); // undefined
// now arr = ["I", , "home"];
alert( arr.length ); // 3
å
ç´ è¢«å é¤äºï¼ä½æ°ç»ä»ç¶æ 3 个å
ç´ ï¼æä»¬å¯ä»¥çå° arr.length == 3ã
è¿å¾æ£å¸¸ï¼å 为 delete obj.key æ¯éè¿ key æ¥ç§»é¤å¯¹åºçå¼ã对äºå¯¹è±¡æ¥è¯´æ¯å¯ä»¥çã使¯å¯¹äºæ°ç»æ¥è¯´ï¼æä»¬é叏叿å©ä¸çå
ç´ è½å¤ç§»å¨å¹¶å æ®è¢«éæ¾çä½ç½®ãæä»¬å¸æå¾å°ä¸ä¸ªæ´ççæ°ç»ã
æä»¥åºè¯¥ä½¿ç¨ç¹æ®çæ¹æ³ã
arr.splice æ¹æ³å¯ä»¥è¯´æ¯å¤çæ°ç»çç士ååãå®å¯ä»¥åææäºæ ï¼æ·»å ï¼å é¤åæå ¥å ç´ ã
è¯æ³æ¯ï¼
arr.splice(start[, deleteCount, elem1, ..., elemN])
å®ä»ç´¢å¼ start å¼å§ä¿®æ¹ arrï¼å é¤ deleteCount 个å
ç´ å¹¶å¨å½åä½ç½®æå
¥ elem1, ..., elemNãæåè¿å被å é¤çå
ç´ æç»æçæ°ç»ã
éè¿ä¾åæä»¬å¯ä»¥å¾å®¹æå°ææ¡è¿ä¸ªæ¹æ³ã
让æä»¬ä»å é¤å¼å§ï¼
let arr = ["I", "study", "JavaScript"];
arr.splice(1, 1); // ä»ç´¢å¼ 1 å¼å§å é¤ 1 个å
ç´
alert( arr ); // ["I", "JavaScript"]
ç®åï¼å¯¹å§ï¼ä»ç´¢å¼ 1 å¼å§å é¤ 1 个å
ç´ ãï¼è¯æ³¨ï¼å½åªå¡«åäº splice ç start åæ°æ¶ï¼å°å é¤ä»ç´¢å¼ start å¼å§çæææ°ç»é¡¹ï¼
å¨ä¸ä¸ä¸ªä¾åä¸ï¼æä»¬å é¤äº 3 个å ç´ ï¼å¹¶ç¨å¦å¤ä¸¤ä¸ªå ç´ æ¿æ¢å®ä»¬ï¼
let arr = ["I", "study", "JavaScript", "right", "now"];
// å 餿°ç»çåä¸é¡¹ï¼å¹¶ä½¿ç¨å
¶ä»å
容代æ¿å®ä»¬
arr.splice(0, 3, "Let's", "dance");
alert( arr ) // ç°å¨ ["Let's", "dance", "right", "now"]
å¨è¿éæä»¬å¯ä»¥çå° splice è¿åäºè¢«å é¤çå
ç´ æç»æçæ°ç»ï¼
let arr = ["I", "study", "JavaScript", "right", "now"];
// å é¤å两个å
ç´
let removed = arr.splice(0, 2);
alert( removed ); // "I", "study" <-- è¢«ä»æ°ç»ä¸å é¤äºçå
ç´
æä»¬å¯ä»¥å° deleteCount 设置为 0ï¼splice æ¹æ³å°±è½å¤æå
¥å
ç´ èä¸ç¨å é¤ä»»ä½å
ç´ ï¼
let arr = ["I", "study", "JavaScript"];
// ä»ç´¢å¼ 2 å¼å§
// å é¤ 0 个å
ç´
// ç¶åæå
¥ "complex" å "language"
arr.splice(2, 0, "complex", "language");
alert( arr ); // "I", "study", "complex", "language", "JavaScript"
å¨è¿éåå ¶ä»æ°ç»æ¹æ³ä¸ï¼è´åç´¢å¼é½æ¯è¢«å 许çãå®ä»¬ä»æ°ç»æ«å°¾è®¡ç®ä½ç½®ï¼å¦ä¸æç¤ºï¼
let arr = [1, 2, 5];
// ä»ç´¢å¼ -1ï¼å°¾ç«¯åä¸ä½ï¼
// å é¤ 0 个å
ç´ ï¼
// ç¶åæå
¥ 3 å 4
arr.splice(-1, 0, 3, 4);
alert( arr ); // 1,2,3,4,5
slice
arr.slice æ¹æ³æ¯ arr.splice ç®åå¾å¤ã
è¯æ³æ¯ï¼
arr.slice([start], [end])
å®ä¼è¿åä¸ä¸ªæ°æ°ç»ï¼å°ææä»ç´¢å¼ start å° endï¼ä¸å
æ¬ endï¼çæ°ç»é¡¹å¤å¶å°ä¸ä¸ªæ°çæ°ç»ãstart å end é½å¯ä»¥æ¯è´æ°ï¼å¨è¿ç§æ
åµä¸ï¼ä»æ«å°¾è®¡ç®ç´¢å¼ã
å®åå符串ç str.slice æ¹æ³æç¹åï¼å°±æ¯æååç¬¦ä¸²æ¿æ¢æåæ°ç»ã
ä¾å¦ï¼
let arr = ["t", "e", "s", "t"];
alert( arr.slice(1, 3) ); // e,sï¼å¤å¶ä»ä½ç½® 1 å°ä½ç½® 3 çå
ç´ ï¼
alert( arr.slice(-2) ); // s,tï¼å¤å¶ä»ä½ç½® -2 å°å°¾ç«¯çå
ç´ ï¼
æä»¬ä¹å¯ä»¥ä¸å¸¦åæ°å°è°ç¨å®ï¼arr.slice() ä¼å建ä¸ä¸ª arr ç坿¬ãå
¶é常ç¨äºè·å坿¬ï¼ä»¥è¿è¡ä¸å½±ååå§æ°ç»çè¿ä¸æ¥è½¬æ¢ã
concat
arr.concat å建ä¸ä¸ªæ°æ°ç»ï¼å ¶ä¸å 嫿¥èªäºå ¶ä»æ°ç»åå ¶ä»é¡¹çå¼ã
è¯æ³ï¼
arr.concat(arg1, arg2...)
宿¥åä»»ææ°éçåæ° ââ æ°ç»æå¼é½å¯ä»¥ã
ç»ææ¯ä¸ä¸ªå
嫿¥èªäº arrï¼ç¶åæ¯ arg1ï¼arg2 çå
ç´ çæ°æ°ç»ã
妿忰 argN æ¯ä¸ä¸ªæ°ç»ï¼é£ä¹å
¶ä¸çææå
ç´ é½ä¼è¢«å¤å¶ãå¦åï¼å°å¤å¶åæ°æ¬èº«ã
ä¾å¦ï¼
let arr = [1, 2];
// ä» arr å [3,4] å建ä¸ä¸ªæ°æ°ç»
alert( arr.concat([3, 4]) ); // 1,2,3,4
// ä» arrã[3,4] å [5,6] å建ä¸ä¸ªæ°æ°ç»
alert( arr.concat([3, 4], [5, 6]) ); // 1,2,3,4,5,6
// ä» arrã[3,4]ã5 å 6 å建ä¸ä¸ªæ°æ°ç»
alert( arr.concat([3, 4], 5, 6) ); // 1,2,3,4,5,6
é常ï¼å®åªå¤å¶æ°ç»ä¸çå ç´ ãå ¶ä»å¯¹è±¡ï¼å³ä½¿å®ä»¬çèµ·æ¥åæ°ç»ä¸æ ·ï¼ä½ä»ç¶ä¼è¢«ä½ä¸ºä¸ä¸ªæ´ä½æ·»å ï¼
let arr = [1, 2];
let arrayLike = {
0: "something",
length: 1
};
alert( arr.concat(arrayLike) ); // 1,2,[object Object]
â¦â¦ä½æ¯ï¼å¦æç±»æ°ç»å¯¹è±¡å
·æ Symbol.isConcatSpreadable 屿§ï¼é£ä¹å®å°±ä¼è¢« concat å½ä½ä¸ä¸ªæ°ç»æ¥å¤çï¼æ¤å¯¹è±¡ä¸çå
ç´ å°è¢«æ·»å ï¼
let arr = [1, 2];
let arrayLike = {
0: "something",
1: "else",
[Symbol.isConcatSpreadable]: true,
length: 2
};
alert( arr.concat(arrayLike) ); // 1,2,something,else
éåï¼forEach
arr.forEach æ¹æ³å 许为æ°ç»çæ¯ä¸ªå ç´ é½è¿è¡ä¸ä¸ªå½æ°ã
è¯æ³ï¼
arr.forEach(function(item, index, array) {
// ... do something with item
});
ä¾å¦ï¼ä¸é¢è¿ä¸ªç¨åºæ¾ç¤ºäºæ°ç»çæ¯ä¸ªå ç´ ï¼
// 对æ¯ä¸ªå
ç´ è°ç¨ alert
["Bilbo", "Gandalf", "Nazgul"].forEach(alert);
èè¿æ®µä»£ç æ´è¯¦ç»å°ä»ç»äºå®ä»¬å¨ç®æ æ°ç»ä¸çä½ç½®ï¼
["Bilbo", "Gandalf", "Nazgul"].forEach((item, index, array) => {
alert(`${item} is at index ${index} in ${array}`);
});
è¯¥å½æ°çç»æï¼å¦æå®æè¿åï¼ä¼è¢«æå¼å忽ç¥ã
卿°ç»ä¸æç´¢
ç°å¨ï¼è®©æä»¬ä»ç»å¨æ°ç»ä¸è¿è¡æç´¢çæ¹æ³ã
indexOf/lastIndexOf å includes
arr.indexOf å arr.includes æ¹æ³è¯æ³ç¸ä¼¼ï¼å¹¶ä¸ä½ç¨åºæ¬ä¸ä¹ä¸åç¬¦ä¸²çæ¹æ³ç¸åï¼åªä¸è¿è¿éæ¯å¯¹æ°ç»å ç´ è䏿¯å符è¿è¡æä½ï¼
arr.indexOf(item, from)ââ ä»ç´¢å¼fromå¼å§æç´¢itemï¼å¦ææ¾å°åè¿åç´¢å¼ï¼å¦åè¿å-1ãarr.includes(item, from)ââ ä»ç´¢å¼fromå¼å§æç´¢itemï¼å¦ææ¾å°åè¿åtrueï¼è¯æ³¨ï¼å¦ææ²¡æ¾å°ï¼åè¿åfalseï¼ã
é常使ç¨è¿äºæ¹æ³æ¶åªä¼ä¼ å
¥ä¸ä¸ªåæ°ï¼ä¼ å
¥ item å¼å§æç´¢ãé»è®¤æ
åµä¸ï¼æç´¢æ¯ä»å¤´å¼å§çã
ä¾å¦ï¼
let arr = [1, 0, false];
alert( arr.indexOf(0) ); // 1
alert( arr.indexOf(false) ); // 2
alert( arr.indexOf(null) ); // -1
alert( arr.includes(1) ); // true
请注æï¼indexOf å includes 使ç¨ä¸¥æ ¼ç¸ç === è¿è¡æ¯è¾ãæä»¥ï¼å¦ææä»¬æç´¢ falseï¼å®ä¼åç¡®æ¾å° false è䏿¯æ°å 0ã
妿æä»¬æ³æ£æ¥æ°ç»ä¸æ¯å¦å
å«å
ç´ itemï¼å¹¶ä¸ä¸éè¦ç¥éå
¶ç¡®åçç´¢å¼ï¼é£ä¹ arr.includes æ¯é¦éã
æ¹æ³ arr.lastIndexOf ä¸ indexOf ç¸åï¼ä½ä»å³åå·¦æ¥æ¾ã
let fruits = ['Apple', 'Orange', 'Apple'];
alert( fruits.indexOf('Apple') ); // 0ï¼ç¬¬ä¸ä¸ª Appleï¼
alert( fruits.lastIndexOf('Apple') ); // 2ï¼æåä¸ä¸ª Appleï¼
includes å¯ä»¥æ£ç¡®çå¤ç NaNæ¹æ³ includes çä¸ä¸ªæ¬¡è¦ä½å¼å¾æ³¨æçç¹æ§æ¯ï¼å®å¯ä»¥æ£ç¡®å¤ç NaNï¼è¿ä¸ indexOf ä¸åï¼
const arr = [NaN];
alert( arr.indexOf(NaN) ); // -1ï¼éï¼åºè¯¥ä¸º 0ï¼
alert( arr.includes(NaN) );// trueï¼æ£ç¡®ï¼
è¿æ¯å 为 includes æ¯å¨æ¯è¾æçæ¶åæè¢«æ·»å å° JavaScript ä¸çï¼å¹¶ä¸å¨å
é¨ä½¿ç¨äºæ´æ°äºçæ¯è¾ç®æ³ã
find å findIndex/findLastIndex
æ³è±¡ä¸ä¸ï¼æä»¬æä¸ä¸ªå¯¹è±¡æ°ç»ãæä»¬å¦ä½æ¾å°å ·æç¹å®æ¡ä»¶ç对象ï¼
è¿æ¶å¯ä»¥ç¨ arr.find æ¹æ³ã
è¯æ³å¦ä¸ï¼
let result = arr.find(function(item, index, array) {
// 妿è¿å trueï¼åè¿å item 并忢è¿ä»£
// 对äºåå¼ï¼falsyï¼çæ
åµï¼åè¿å undefined
});
便¬¡å¯¹æ°ç»ä¸çæ¯ä¸ªå ç´ è°ç¨è¯¥å½æ°ï¼
itemæ¯å ç´ ãindexæ¯å®çç´¢å¼ãarrayæ¯æ°ç»æ¬èº«ã
妿å®è¿å trueï¼åæç´¢åæ¢ï¼å¹¶è¿å itemãå¦ææ²¡ææç´¢å°ï¼åè¿å undefinedã
ä¾å¦ï¼æä»¬æä¸ä¸ªåå¨ç¨æ·çæ°ç»ï¼æ¯ä¸ªç¨æ·é½æ id å name åæ®µã让æä»¬æ¾å° id == 1 çé£ä¸ªç¨æ·ï¼
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"}
];
let user = users.find(item => item.id == 1);
alert(user.name); // John
å¨ç°å®çæ´»ä¸ï¼å¯¹è±¡æ°ç»æ¯å¾å¸¸è§çï¼æä»¥ find æ¹æ³é常æç¨ã
注æå¨è¿ä¸ªä¾åä¸ï¼æä»¬ä¼ ç»äº find ä¸ä¸ªå忰彿° item => item.id == 1ãè¿å¾å
¸åï¼å¹¶ä¸ find æ¹æ³çå
¶ä»åæ°å¾å°ä½¿ç¨ã
arr.findIndex æ¹æ³ï¼ä¸ arr.findï¼å
·æç¸åçè¯æ³ï¼ä½å®è¿åæ¾å°çå
ç´ çç´¢å¼ï¼è䏿¯å
ç´ æ¬èº«ãå¦ææ²¡æ¾å°ï¼åè¿å -1ã
arr.findLastIndex æ¹æ³ç±»ä¼¼äº findIndexï¼ä½ä»å³åå·¦æç´¢ï¼ç±»ä¼¼äº lastIndexOfã
è¿æ¯ä¸ä¸ªä¾åï¼
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"},
{id: 4, name: "John"}
];
// 寻æ¾ç¬¬ä¸ä¸ª John çç´¢å¼
alert(users.findIndex(user => user.name == 'John')); // 0
// å¯»æ¾æåä¸ä¸ª John çç´¢å¼
alert(users.findLastIndex(user => user.name == 'John')); // 3
filter
find æ¹æ³æç´¢çæ¯ä½¿å½æ°è¿å true ç第ä¸ä¸ªï¼å个ï¼å
ç´ ã
妿éè¦å¹é çæå¾å¤ï¼æä»¬å¯ä»¥ä½¿ç¨ arr.filter(fn)ã
è¯æ³ä¸ find 大è´ç¸åï¼ä½æ¯ filter è¿åçæ¯ææå¹é
å
ç´ ç»æçæ°ç»ï¼
let results = arr.filter(function(item, index, array) {
// 妿 true item 被 push å° resultsï¼è¿ä»£ç»§ç»
// 妿ä»ä¹é½æ²¡æ¾å°ï¼åè¿å空æ°ç»
});
ä¾å¦ï¼
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"}
];
// è¿ååä¸¤ä¸ªç¨æ·çæ°ç»
let someUsers = users.filter(item => item.id < 3);
alert(someUsers.length); // 2
è½¬æ¢æ°ç»
让æä»¬ç»§ç»å¦ä¹ è¿è¡æ°ç»è½¬æ¢åéæ°æåºçæ¹æ³ã
map
arr.map æ¹æ³æ¯ææç¨åç»å¸¸ä½¿ç¨çæ¹æ³ä¹ä¸ã
å®å¯¹æ°ç»çæ¯ä¸ªå ç´ é½è°ç¨å½æ°ï¼å¹¶è¿åç»ææ°ç»ã
è¯æ³ï¼
let result = arr.map(function(item, index, array) {
// è¿åæ°å¼è䏿¯å½åå
ç´
})
ä¾å¦ï¼å¨è¿éæä»¬å°æ¯ä¸ªå ç´ è½¬æ¢ä¸ºå®çå符串é¿åº¦ï¼
let lengths = ["Bilbo", "Gandalf", "Nazgul"].map(item => item.length);
alert(lengths); // 5,7,6
sort(fn)
arr.sort æ¹æ³å¯¹æ°ç»è¿è¡ åä½ï¼in-placeï¼ æåºï¼æ´æ¹å ç´ ç顺åºã(è¯æ³¨ï¼å使¯æå¨æ¤æ°ç»å ï¼èéçæä¸ä¸ªæ°æ°ç»ã)
å®è¿è¿åæåºåçæ°ç»ï¼ä½æ¯è¿åå¼é常ä¼è¢«å¿½ç¥ï¼å 为修æ¹äº arr æ¬èº«ã
è¯æ³ï¼
let arr = [ 1, 2, 15 ];
// è¯¥æ¹æ³éæ°æå arr çå
容
arr.sort();
alert( arr ); // 1, 15, 2
ä½ ææ²¡ææ³¨æå°ç»ææä»ä¹å¥æªçå°æ¹ï¼
顺åºåæäº 1, 15, 2ãä¸å¯¹ï¼ä½ä¸ºä»ä¹å¢ï¼
è¿äºå ç´ é»è®¤æ åµä¸è¢«æå符串è¿è¡æåºã
ä»åé¢ä¸çï¼ææå
ç´ é½è¢«è½¬æ¢ä¸ºå符串ï¼ç¶åè¿è¡æ¯è¾ã对äºåç¬¦ä¸²ï¼æç
§è¯å
¸é¡ºåºè¿è¡æåºï¼å®é
ä¸åºè¯¥æ¯ "2" > "15"ã
è¦ä½¿ç¨æä»¬èªå·±çæåºé¡ºåºï¼æä»¬éè¦æä¾ä¸ä¸ªå½æ°ä½ä¸º arr.sort() çåæ°ã
è¯¥å½æ°åºè¯¥æ¯è¾ä¸¤ä¸ªä»»æå¼å¹¶è¿åï¼
function compare(a, b) {
if (a > b) return 1; // å¦æç¬¬ä¸ä¸ªå¼æ¯ç¬¬äºä¸ªå¼å¤§
if (a == b) return 0; // å¦æä¸¤ä¸ªå¼ç¸ç
if (a < b) return -1; // å¦æç¬¬ä¸ä¸ªå¼æ¯ç¬¬äºä¸ªå¼å°
}
ä¾å¦ï¼ææ°åè¿è¡æåºï¼
function compareNumeric(a, b) {
if (a > b) return 1;
if (a == b) return 0;
if (a < b) return -1;
}
let arr = [ 1, 2, 15 ];
arr.sort(compareNumeric);
alert(arr); // 1, 2, 15
ç°å¨ç»æç¬¦å颿äºã
æä»¬æèä¸ä¸è¿å¿åçäºä»ä¹ãarr å¯ä»¥æ¯ç±ä»»ä½å
å®¹ç»æçæ°ç»ï¼å¯¹åï¼å®å¯è½å
嫿°åãå符串ã对象æå
¶ä»ä»»ä½å
容ãæä»¬æä¸ç» ä¸äºå
ç´ ãè¦å¯¹å
¶è¿è¡æåºï¼æä»¬éè¦ä¸ä¸ª æåºå½æ° æ¥ç¡®è®¤å¦ä½æ¯è¾è¿äºå
ç´ ãé»è®¤æ¯æå符串è¿è¡æåºçã
arr.sort(fn) æ¹æ³å®ç°äºéç¨çæåºç®æ³ãæä»¬ä¸éè¦å
³å¿å®çå
é¨å·¥ä½åçï¼å¤§å¤æ°æ
åµä¸é½æ¯ç»è¿ å¿«éæåº æ Timsort ç®æ³ä¼åçï¼ãå®å°éåæ°ç»ï¼ä½¿ç¨æä¾ç彿°æ¯è¾å
¶å
ç´ å¹¶å¯¹å
¶éæ°æåºï¼æä»¬æéè¦çå°±æ¯æä¾æ§è¡æ¯è¾ç彿° fnã
顺便说ä¸å¥ï¼å¦ææä»¬æ³ç¥éè¦æ¯è¾åªäºå ç´ ââ é£ä¹ä»ä¹é½ä¸ä¼é»æ¢ alert å®ä»¬ï¼
[1, -2, 15, 2, 0, 8].sort(function(a, b) {
alert( a + " <> " + b );
return a - b;
});
è¯¥ç®æ³å¯ä»¥å¨æ¤è¿ç¨ä¸ï¼å°ä¸ä¸ªå ç´ ä¸å¤ä¸ªå ¶ä»å ç´ è¿è¡æ¯è¾ï¼ä½æ¯å®ä¼å°è¯è¿è¡å°½å¯è½å°çæ¯è¾ã
å®é ä¸ï¼æ¯è¾å½æ°åªéè¦è¿åä¸ä¸ªæ£æ°è¡¨ç¤ºâ大äºâï¼ä¸ä¸ªè´æ°è¡¨ç¤ºâå°äºâã
éè¿è¿ä¸ªåçæä»¬å¯ä»¥ç¼åæ´çç彿°ï¼
let arr = [ 1, 2, 15 ];
arr.sort(function(a, b) { return a - b; });
alert(arr); // 1, 2, 15
ä½ è¿è®°å¾ ç®å¤´å½æ° åï¼è¿é使ç¨ç®å¤´å½æ°ä¼æ´å ç®æ´ï¼
arr.sort( (a, b) => a - b );
è¿ä¸ä¸é¢æ´é¿ççæ¬å®å ¨ç¸åã
localeCompare for stringsä½ è®°å¾ å符串æ¯è¾ ç®æ³åï¼é»è®¤æ åµä¸ï¼å®éè¿åæ¯çä»£ç æ¯è¾åæ¯ã
对äºè®¸å¤åæ¯ï¼æå¥½ä½¿ç¨ str.localeCompare æ¹æ³æ£ç¡®å°å¯¹åæ¯è¿è¡æåºï¼ä¾å¦ Ãã
ä¾å¦ï¼è®©æä»¬ç¨å¾·è¯å¯¹å 个å½å®¶/å°åºè¿è¡æåºï¼
let countries = ['Ãsterreich', 'Andorra', 'Vietnam'];
alert( countries.sort( (a, b) => a > b ? 1 : -1) ); // Andorra, Vietnam, Ãsterreichï¼éçï¼
alert( countries.sort( (a, b) => a.localeCompare(b) ) ); // Andorra,Ãsterreich,Vietnamï¼å¯¹çï¼ï¼
reverse
arr.reverse æ¹æ³ç¨äºé¢ å arr ä¸å
ç´ ç顺åºã
ä¾å¦ï¼
let arr = [1, 2, 3, 4, 5];
arr.reverse();
alert( arr ); // 5,4,3,2,1
å®ä¹ä¼è¿åé¢ ååçæ°ç» arrã
split å join
举ä¸ä¸ªç°å®çæ´»åºæ¯çä¾åãæä»¬æ£å¨ç¼åä¸ä¸ªæ¶æ¯åºç¨ç¨åºï¼å¹¶ä¸è¯¥äººåè¾å
¥ä»¥éå·åéçæ¥æ¶è
å表ï¼John, Pete, Maryãä½å¯¹æä»¬æ¥è¯´ï¼ååæ°ç»æ¯å个å符串èéå¾å¤ãæä¹åæè½è·å¾è¿æ ·çæ°ç»å¢ï¼
str.split(delim) æ¹æ³å¯ä»¥åå°ãå®éè¿ç»å®çåé符 delim å°å符串å岿ä¸ä¸ªæ°ç»ã
å¨ä¸é¢çä¾åä¸ï¼æä»¬ç¨âéå·åè·çä¸ä¸ªç©ºæ ¼âä½ä¸ºåé符ï¼
let names = 'Bilbo, Gandalf, Nazgul';
let arr = names.split(', ');
for (let name of arr) {
alert( `A message to ${name}.` ); // A message to Bilboï¼åå
¶ä»ååï¼
}
split æ¹æ³æä¸ä¸ªå¯éç第äºä¸ªæ°ååæ° ââ 对æ°ç»é¿åº¦çéå¶ã妿æä¾äºï¼é£ä¹é¢å¤çå
ç´ ä¼è¢«å¿½ç¥ãä½å®é
ä¸å®å¾å°ä½¿ç¨ï¼
let arr = 'Bilbo, Gandalf, Nazgul, Saruman'.split(', ', 2);
alert(arr); // Bilbo, Gandalf
è°ç¨å¸¦æç©ºåæ° s ç split(s)ï¼ä¼å°å符串æåä¸ºåæ¯æ°ç»ï¼
let str = "test";
alert( str.split('') ); // t,e,s,t
arr.join(glue) ä¸ split ç¸åãå®ä¼å¨å®ä»¬ä¹é´å建ä¸ä¸²ç± glue ç²åç arr 项ã
ä¾å¦ï¼
let arr = ['Bilbo', 'Gandalf', 'Nazgul'];
let str = arr.join(';'); // 使ç¨åå· ; å°æ°ç»ç²åæå符串
alert( str ); // Bilbo;Gandalf;Nazgul
reduce/reduceRight
彿们éè¦éåä¸ä¸ªæ°ç»æ¶ ââ æä»¬å¯ä»¥ä½¿ç¨ forEachï¼for æ for..ofã
彿们éè¦éåå¹¶è¿åæ¯ä¸ªå
ç´ çæ°æ®æ¶ ââ æä»¬å¯ä»¥ä½¿ç¨ mapã
arr.reduce æ¹æ³å arr.reduceRight æ¹æ³åä¸é¢çç§ç±»å·®ä¸å¤ï¼ä½ç¨å¾®å¤æä¸ç¹ãå®ä»¬ç¨äºæ ¹æ®æ°ç»è®¡ç®å个å¼ã
è¯æ³æ¯ï¼
let value = arr.reduce(function(accumulator, item, index, array) {
// ...
}, [initial]);
è¯¥å½æ°ä¸ä¸ªæ¥ä¸ä¸ªå°åºç¨äºæææ°ç»å ç´ ï¼å¹¶å°å ¶ç»æâæ¬è¿ï¼carry onï¼âå°ä¸ä¸ä¸ªè°ç¨ã
åæ°ï¼
accumulatorââ æ¯ä¸ä¸ä¸ªå½æ°è°ç¨çç»æï¼ç¬¬ä¸æ¬¡çäºinitialï¼å¦ææä¾äºinitialçè¯ï¼ãitemââ å½åçæ°ç»å ç´ ãindexââ å½åç´¢å¼ãarrââ æ°ç»æ¬èº«ã
åºç¨å½æ°æ¶ï¼ä¸ä¸ä¸ªå½æ°è°ç¨çç»æå°ä½ä¸ºç¬¬ä¸ä¸ªåæ°ä¼ éç»ä¸ä¸ä¸ªå½æ°ã
å æ¤ï¼ç¬¬ä¸ä¸ªåæ°æ¬è´¨ä¸æ¯ç´¯å å¨ï¼ç¨äºå卿æå
åæ§è¡çç»åç»æãæåï¼å®æä¸º reduce çç»æã
å¬èµ·æ¥å¤æåï¼
ææ¡è¿ä¸ªç¥è¯ç¹çæç®åçæ¹æ³å°±æ¯éè¿ç¤ºä¾ã
å¨è¿éï¼æä»¬éè¿ä¸è¡ä»£ç å¾å°ä¸ä¸ªæ°ç»çæ»åï¼
let arr = [1, 2, 3, 4, 5];
let result = arr.reduce((sum, current) => sum + current, 0);
alert(result); // 15
ä¼ éç» reduce ç彿°ä»
使ç¨äº 2 ä¸ªåæ°ï¼é常è¿å°±è¶³å¤äºã
让æä»¬ççç»èï¼å°åºåçäºä»ä¹ã
- å¨ç¬¬ä¸æ¬¡è¿è¡æ¶ï¼
sumçå¼ä¸ºåå§å¼initialï¼reduceçæåä¸ä¸ªåæ°ï¼ï¼çäº 0ï¼currentæ¯ç¬¬ä¸ä¸ªæ°ç»å ç´ ï¼çäº1ãæä»¥å½æ°è¿è¡çç»ææ¯1ã - å¨ç¬¬äºæ¬¡è¿è¡æ¶ï¼
sum = 1ï¼æä»¬å°ç¬¬äºä¸ªæ°ç»å ç´ ï¼2ï¼ä¸å ¶ç¸å å¹¶è¿åã - å¨ç¬¬ä¸æ¬¡è¿è¡ä¸ï¼
sum = 3ï¼æä»¬ç»§ç»æä¸ä¸ä¸ªå ç´ ä¸å ¶ç¸å ï¼ä»¥æ¤ç±»æ¨â¦â¦
è®¡ç®æµç¨ï¼
æè ä»¥è¡¨æ ¼çå½¢å¼è¡¨ç¤ºï¼æ¯ä¸è¡ä»£è¡¨çæ¯å¯¹ä¸ä¸ä¸ªæ°ç»å ç´ ç彿°è°ç¨ï¼
sum |
current |
result |
|
|---|---|---|---|
| 第 1 次è°ç¨ | 0 |
1 |
1 |
| 第 2 次è°ç¨ | 1 |
2 |
3 |
| 第 3 次è°ç¨ | 3 |
3 |
6 |
| 第 4 次è°ç¨ | 6 |
4 |
10 |
| 第 5 次è°ç¨ | 10 |
5 |
15 |
å¨è¿éï¼æä»¬å¯ä»¥æ¸ æ¥å°çå°ä¸ä¸ä¸ªè°ç¨çç»æå¦ä½æä¸ºä¸ä¸ä¸ªè°ç¨ç第ä¸ä¸ªåæ°ã
æä»¬ä¹å¯ä»¥çç¥åå§å¼ï¼
let arr = [1, 2, 3, 4, 5];
// å é¤ reduce çåå§å¼ï¼æ²¡æ 0ï¼
let result = arr.reduce((sum, current) => sum + current);
alert( result ); // 15
ç»ææ¯ä¸æ ·çãè¿æ¯å ä¸ºå¦ææ²¡æåå§å¼ï¼é£ä¹ reduce ä¼å°æ°ç»ç第ä¸ä¸ªå
ç´ ä½ä¸ºåå§å¼ï¼å¹¶ä»ç¬¬äºä¸ªå
ç´ å¼å§è¿ä»£ã
计ç®è¡¨ä¸ä¸é¢ç¸åï¼åªæ¯å»æç¬¬ä¸è¡ã
使¯è¿ç§ä½¿ç¨éè¦é常å°å¿ã妿æ°ç»ä¸ºç©ºï¼é£ä¹å¨æ²¡æåå§å¼çæ
åµä¸è°ç¨ reduce ä¼å¯¼è´é误ã
ä¾å¦ï¼
let arr = [];
// Error: Reduce of empty array with no initial value
// 妿åå§å¼åå¨ï¼å reduce å°ä¸ºç©º arr è¿åå®ï¼å³è¿ä¸ªåå§å¼ï¼ã
arr.reduce((sum, current) => sum + current);
æä»¥å»ºè®®å§ç»æå®åå§å¼ã
arr.reduceRight å arr.reduce æ¹æ³çåè½ä¸æ ·ï¼åªæ¯éå为ä»å³å°å·¦ã
Array.isArray
æ°ç»æ¯åºäºå¯¹è±¡çï¼ä¸ææåç¬çè¯è¨ç±»åã
æä»¥ typeof ä¸è½å¸®å©ä»æ°ç»ä¸åºååºæ®é对象ï¼
alert(typeof {}); // object
alert(typeof []); // objectï¼ç¸åï¼
â¦â¦ä½æ¯æ°ç»ç»å¸¸è¢«ä½¿ç¨ï¼å æ¤æä¸ç§ç¹æ®çæ¹æ³ç¨äºå¤æï¼Array.isArray(value)ã妿 value æ¯ä¸ä¸ªæ°ç»ï¼åè¿å trueï¼å¦åè¿å falseã
alert(Array.isArray({})); // false
alert(Array.isArray([])); // true
大夿°æ¹æ³é½æ¯æ âthisArgâ
å 乿æè°ç¨å½æ°çæ°ç»æ¹æ³ ââ æ¯å¦ findï¼filterï¼mapï¼é¤äº sort æ¯ä¸ä¸ªç¹ä¾ï¼é½æ¥åä¸ä¸ªå¯éçéå åæ° thisArgã
ä¸é¢çé¨å䏿²¡æè§£éè¯¥åæ°ï¼å ä¸ºè¯¥åæ°å¾å°ä½¿ç¨ã使¯ä¸ºäºå®æ´æ§ï¼æä»¬éè¦è®²è®²å®ã
以䏿¯è¿äºæ¹æ³ç宿´è¯æ³ï¼
arr.find(func, thisArg);
arr.filter(func, thisArg);
arr.map(func, thisArg);
// ...
// thisArg æ¯å¯éçæåä¸ä¸ªåæ°
thisArg åæ°çå¼å¨ func ä¸å为 thisã
ä¾å¦ï¼å¨è¿éæä»¬ä½¿ç¨ army å¯¹è±¡æ¹æ³ä½ä¸ºè¿æ»¤å¨ï¼thisArg ç¨äºä¼ éä¸ä¸æï¼passes the contextï¼ï¼
let army = {
minAge: 18,
maxAge: 27,
canJoin(user) {
return user.age >= this.minAge && user.age < this.maxAge;
}
};
let users = [
{age: 16},
{age: 20},
{age: 23},
{age: 30}
];
// æ¾å° army.canJoin è¿å true ç user
let soldiers = users.filter(army.canJoin, army);
alert(soldiers.length); // 2
alert(soldiers[0].age); // 20
alert(soldiers[1].age); // 23
妿å¨ä¸é¢ç示ä¾ä¸æä»¬ä½¿ç¨äº users.filter(army.canJoin)ï¼é£ä¹ army.canJoin å°è¢«ä½ä¸ºç¬ç«å½æ°è°ç¨ï¼å¹¶ä¸è¿æ¶ this=undefinedï¼ä»èä¼å¯¼è´å³æ¶é误ã
å¯ä»¥ç¨ users.filter(user => army.canJoin(user)) æ¿æ¢å¯¹ users.filter(army.canJoin, army) çè°ç¨ãåè
ç使ç¨é¢çæ´é«ï¼å 为对äºå¤§å¤æ°äººæ¥è¯´ï¼å®æ´å®¹æçè§£ã
æ»ç»
æ°ç»æ¹æ³å¤å¿åï¼
-
æ·»å /å é¤å ç´ ï¼
push(...items)ââ å尾端添å å ç´ ï¼pop()ââ ä»å°¾ç«¯æåä¸ä¸ªå ç´ ï¼shift()ââ ä»é¦ç«¯æåä¸ä¸ªå ç´ ï¼unshift(...items)ââ åé¦ç«¯æ·»å å ç´ ï¼splice(pos, deleteCount, ...items)ââ ä»poså¼å§å é¤deleteCount个å ç´ ï¼å¹¶æå ¥itemsãslice(start, end)ââ å建ä¸ä¸ªæ°æ°ç»ï¼å°ä»ç´¢å¼startå°ç´¢å¼endï¼ä½ä¸å æ¬endï¼çå ç´ å¤å¶è¿å»ãconcat(...items)ââ è¿åä¸ä¸ªæ°æ°ç»ï¼å¤å¶å½åæ°ç»çææå ç´ ï¼å¹¶åå ¶ä¸æ·»åitemsã妿itemsä¸çä»»æä¸é¡¹æ¯ä¸ä¸ªæ°ç»ï¼é£ä¹å°±åå ¶å ç´ ã
-
æç´¢å ç´ ï¼
indexOf/lastIndexOf(item, pos)ââ ä»ç´¢å¼poså¼å§æç´¢itemï¼æç´¢å°åè¿å该项çç´¢å¼ï¼å¦åè¿å-1ãincludes(value)ââ 妿æ°ç»ævalueï¼åè¿åtrueï¼å¦åè¿åfalseãfind/filter(func)ââ éè¿funcè¿æ»¤å ç´ ï¼è¿å使funcè¿åtrueç第ä¸ä¸ªå¼/ææå¼ãfindIndexåfind类似ï¼ä½è¿åç´¢å¼è䏿¯å¼ã
-
éåå ç´ ï¼
forEach(func)ââ 对æ¯ä¸ªå ç´ é½è°ç¨funcï¼ä¸è¿åä»»ä½å 容ã
-
è½¬æ¢æ°ç»ï¼
map(func)ââ æ ¹æ®å¯¹æ¯ä¸ªå ç´ è°ç¨funcçç»æå建ä¸ä¸ªæ°æ°ç»ãsort(func)ââ 对æ°ç»è¿è¡åä½ï¼in-placeï¼æåºï¼ç¶åè¿åå®ãreverse()ââ åä½ï¼in-placeï¼å转æ°ç»ï¼ç¶åè¿åå®ãsplit/joinââ å°å符串æå为æ°ç»å¹¶è¿å/å°æ°ç»é¡¹ç»åæå符串并è¿åãreduce/reduceRight(func, initial)ââ éè¿å¯¹æ¯ä¸ªå ç´ è°ç¨funcè®¡ç®æ°ç»ä¸çå个å¼ï¼å¹¶å¨è°ç¨ä¹é´ä¼ éä¸é´ç»æã
-
å ¶ä»ï¼
Array.isArray(value)æ£æ¥valueæ¯å¦æ¯ä¸ä¸ªæ°ç»ï¼å¦ææ¯åè¿åtrueï¼å¦åè¿åfalseã
请注æï¼sortï¼reverse å splice æ¹æ³ä¿®æ¹çæ¯æ°ç»æ¬èº«ã
è¿äºæ¯æå¸¸ç¨çæ¹æ³ï¼å®ä»¬è¦ç 99ï¼ çç¨ä¾ã使¯è¿æå ¶ä»å 个ï¼
-
arr.some(fn)/arr.every(fn) æ£æ¥æ°ç»ã
ä¸
map类似ï¼å¯¹æ°ç»çæ¯ä¸ªå ç´ è°ç¨å½æ°fnã妿任ä½/ææç»æä¸ºtrueï¼åè¿åtrueï¼å¦åè¿åfalseãè¿ä¸¤ä¸ªæ¹æ³çè¡ä¸ºç±»ä¼¼äº
||å&&è¿ç®ç¬¦ï¼å¦æfnè¿åä¸ä¸ªçå¼ï¼arr.some()ç«å³è¿åtrue并忢è¿ä»£å ¶ä½æ°ç»é¡¹ï¼å¦æfnè¿åä¸ä¸ªåå¼ï¼arr.every()ç«å³è¿åfalseå¹¶åæ¢å¯¹å ¶ä½æ°ç»é¡¹çè¿ä»£ãæä»¬å¯ä»¥ä½¿ç¨
everyæ¥æ¯è¾æ°ç»ï¼function arraysEqual(arr1, arr2) { return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]); } alert( arraysEqual([1, 2], [1, 2])); // true -
arr.fill(value, start, end) ââ ä»ç´¢å¼
startå°endï¼ç¨éå¤çvalueå¡«å æ°ç»ã -
arr.copyWithin(target, start, end) ââ å°ä»ä½ç½®
startå°endçææå ç´ å¤å¶å° èªèº« çtargetä½ç½®ï¼è¦çç°æå ç´ ï¼ã -
arr.flat(depth)/arr.flatMap(fn) ä»å¤ç»´æ°ç»å建ä¸ä¸ªæ°çæå¹³æ°ç»ã
-
Array.of(element0[, element1[, â¦[, elementN]]]) åºäºå¯åæ°éçåæ°å建ä¸ä¸ªæ°ç
Arrayå®ä¾ï¼èä¸éè¦èèåæ°çæ°éæç±»åã
æå ³å®æ´å表ï¼è¯·åé æåã
ä¹çèµ·æ¥ï¼ä¼¼ä¹æå¾å¤æ¹æ³ï¼å¾é¾è®°ä½ãä½å®é ä¸è¿æ¯çèµ·æ¥è¦å®¹æå¾å¤ã
æµè§è¿ä¸ªå¤å¿åï¼ä»¥äºè§£è¿äºæ¹æ³ãç¶åè§£å³æ¬ç« ä¸çä¹ é¢æ¥è¿è¡ç»ä¹ ï¼ä»¥ä¾¿è®©ä½ ææ°ç»æ¹æ³ç使ç¨ç»éªã
ç¶åï¼æ¯å½ä½ éè¦å¯¹æ°ç»è¿è¡æäºæä½ï¼èåä¸ç¥éæä¹åçæ¶åï¼è¯·åå°è¿å¿ï¼æ¥çè¿ä¸ªå¤å¿åï¼ç¶åæ¾å°æ£ç¡®çæ¹æ³ã示ä¾å°å¸®å©ä½ æ£ç¡®ç¼åå®ãç¨ä¸äºå¤ä¹ ï¼ä½ å°±èªç¶èç¶å°è®°ä½è¿äºæ¹æ³äºï¼æ ¹æ¬ä¸éè¦ä½ æ»è®°ç¡¬èã
è¯è®º
<code>æ ç¾æå ¥åªæå 个è¯ç代ç ï¼æå ¥å¤è¡ä»£ç å¯ä»¥ä½¿ç¨<pre>æ ç¾ï¼å¯¹äºè¶ è¿ 10 è¡ç代ç ï¼å»ºè®®ä½ ä½¿ç¨æ²ç®±ï¼plnkrï¼JSBinï¼codepenâ¦ï¼