ç´¢å¼éå
æ¬ç« ä»ç»æç´¢å¼å¼æåºçæ°æ®éåãå
æ¬æ°ç»åç±»æ°ç»ç»æï¼å¦ Array 对象å TypedArray 对象ã
æ°ç»æ¯ç±åç§°åç´¢å¼å¼ç¨ç弿æçæåºå表ã
ä¾å¦ï¼èèä¸ä¸ªå为 emp çæ°ç»ï¼å®å
嫿æ°åéåç¼å·ç´¢å¼çéåå§åãæä»¥ emp[0] æ¯ 0 å·åå·¥ï¼emp[1] æ¯ 1 å·åå·¥ï¼ä»¥æ¤ç±»æ¨ã
JavaScript 䏿²¡ææç¡®çæ°ç»æ°æ®ç±»åã使¯ï¼ä½ å¯ä»¥ä½¿ç¨é¢å®ä¹ç Array 对象åå
¶æ¹æ³æ¥å¤çåºç¨ç¨åºä¸çæ°ç»ãArray 对象å
·æä»¥åç§æ¹å¼æä½æ°ç»çæ¹æ³ï¼ä¾å¦è¿æ¥ãå转åæåºã宿ä¸ä¸ªç¨äºç¡®å®æ°ç»é¿åº¦ç屿§åç¨äºæ£å表达å¼çå
¶ä»å±æ§ã
å¨è¿ç¯æç« ä¸ï¼æä»¬å°ä¸æ³¨äºæ°ç»ï¼ä½è®¸å¤ç¸åçæ¦å¿µä¹éç¨äºç±»ååæ°ç»ï¼å 为æ°ç»åç±»ååæ°ç»å ±äº«è®¸å¤ç±»ä¼¼çæ¹æ³ãå ³äºç±»ååæ°ç»çæ´å¤ä¿¡æ¯ï¼è¯·åè§ç±»ååæ°ç»åèã
å建æ°ç»
以ä¸è¯å¥å建äºçæçæ°ç»ï¼
const arr1 = new Array(element0, element1, /* ⦠,*/ elementN);
const arr2 = Array(element0, element1, /* ⦠,*/ elementN);
const arr3 = [element0, element1, /* ⦠,*/ elementN];
element0, element1, â¦, elementN æ¯æ°ç»å
ç´ çå¼å表ã彿å®è¿äºå¼æ¶ï¼æ°ç»å°ç¨å®ä»¬ä½ä¸ºæ°ç»çå
ç´ åå§åãæ°ç»ç length 屿§è¢«è®¾ç½®ä¸ºåæ°çæ°éã
æ¬å·è¯æ³ç§°ä¸ºâæ°ç»åé¢éâæâæ°ç»åå§åå¼âã宿¯å ¶ä»å½¢å¼çæ°ç»å建æ´çï¼å æ¤é常æ¯é¦éãè¯¦è§æ°ç»åé¢éã
为äºå建ä¸ä¸ªé¿åº¦ä¸ä¸º 0ï¼ä½æ¯å没æä»»ä½å ç´ çæ°ç»ï¼å¯é以ä¸ä»»ä½ä¸ç§æ¹å¼ï¼
// è¿ç§æ¹å¼...
const arr1 = new Array(arrayLength);
// ...ä¸è¿ç§æ¹å¼ä¼å½¢æç¸åæ°ç»
const arr2 = Array(arrayLength);
// è¿ä¸ªææä¹ä¸æ ·
const arr3 = [];
arr3.length = arrayLength;
夿³¨ï¼ä»¥ä¸ä»£ç ï¼arrayLength å¿
须为ä¸ä¸ª Numberãå¦åï¼å°ä¼å建ä¸ä¸ªåªæå个å
ç´ ï¼å
嫿ä¾çå¼ï¼çæ°ç»ãè°ç¨ arr.length ä¼è¿å arrayLengthï¼ä½æ°ç»ä¸å
å«ä»»ä½å
ç´ ãfor...in 循ç¯å¨æ°ç»ä¸æ¾ä¸å°ä»»ä½å±æ§ã
é¤äºä¸é¢æç¤ºçæ°å®ä¹çåéå¤ï¼æ°ç»è¿å¯ä»¥è¢«èµå¼ä¸ºæ°å¯¹è±¡æç°æå¯¹è±¡ç屿§ï¼
const obj = {};
// â¦
obj.prop = [element0, element1, /* ⦠,*/ elementN];
// æ
const obj = { prop: [element0, element1, /* ⦠,*/ elementN] };
å¦æä½ å¸æç¨å个å
ç´ åå§åä¸ä¸ªæ°ç»ï¼èè¿ä¸ªå
ç´ æ°å¥½åæ¯ Numberï¼é£ä¹ä½ å¿
é¡»ä½¿ç¨æ¬å·è¯æ³ãå½å个 Number ä¼ éç» Array() æé 彿°æ¶ï¼å°ä¼è¢«è§£é为 arrayLengthï¼å¹¶éå个å
ç´ ã
// å建ä¸ä¸ªåªæå¯ä¸å
ç´ çæ°ç»ï¼æ°å 42ã
const arr = [42];
// å建ä¸ä¸ªæ²¡æå
ç´ çæ°ç»ï¼ä¸æ°ç»çé¿åº¦è¢«è®¾ç½®æ 42ã
const arr = Array(42);
// ä¸é¢ç代ç ä¸ä¸é¢ç代ç çä»·ï¼
const arr = [];
arr.length = 42;
妿 N 䏿¯ä¸ä¸ªæ´æ°ï¼è°ç¨ Array(N) å°ä¼æ¥ RangeError é误ï¼ä¸é¢çä¾å说æäºè¿ç§è¡ä¸ºï¼
const arr = Array(9.3); // RangeError: Invalid array length
å¦æä½ éè¦å建任æç±»åçåå ç´ æ°ç»ï¼å®å ¨çæ¹å¼æ¯ä½¿ç¨æ°ç»åé¢éãæè å¨åæ°ç»æ·»å å个å ç´ ä¹åå å建ä¸ä¸ªç©ºçæ°ç»ã
ä½ ä¹å¯ä»¥ä½¿ç¨ Array.of éææ¹æ³æ¥å建å
å«å个å
ç´ çæ°ç»ã
const wisenArray = Array.of(9.3); // wisenArray åªå
å«ä¸ä¸ªå
ç´ ï¼9.3
å¼ç¨æ°ç»å ç´
å 为å ç´ ä¹æ¯å±æ§ï¼ä½ å¯ä»¥ä½¿ç¨å±æ§è®¿é®å¨æ¥è®¿é®ãåè®¾ä½ å®ä¹äºä»¥ä¸æ°ç»ï¼
const myArray = ["Wind", "Rain", "Fire"];
ä½ å¯ä»¥å°æ°ç»ç第ä¸ä¸ªå
ç´ å¼ç¨ä¸º myArray[0]ï¼å°æ°ç»ç第äºä¸ªå
ç´ å¼ç¨ä¸º myArray[1]ï¼çç...å
ç´ çç´¢å¼ä»é¶å¼å§ã
夿³¨ï¼ä½ ä¹å¯ä»¥ä½¿ç¨å±æ§è®¿é®å¨æ¥è®¿é®æ°ç»çå ¶ä»å±æ§ï¼å°±åå¯¹è±¡ä¸æ ·ã
const arr = ["one", "two", "three"];
arr[2]; // three
arr["length"]; // 3
å¡«å æ°ç»
ä½ å¯ä»¥éè¿ç»æ°ç»å ç´ èµå¼æ¥å¡«å æ°ç»ï¼ä¾å¦ï¼
const emp = [];
emp[0] = "Casey Jones";
emp[1] = "Phil Lesh";
emp[2] = "August West";
夿³¨ï¼å¦æä½ å¨ä»¥ä¸ä»£ç ä¸ç»æ°ç»è¿ç®ç¬¦çæ¯ä¸ä¸ªéæ´åæ°å¼ï¼é£ä¹å®å°ä½ä¸ºä¸ä¸ªè¡¨ç¤ºæ°ç»ç对象ç屿§å建ï¼è䏿¯æ°ç»çå ç´ ã
const arr = [];
arr[3.4] = "Oranges";
console.log(arr.length); // 0
console.log(Object.hasOwn(arr, 3.4)); // true
ä½ ä¹å¯ä»¥å¨å建æ°ç»çæ¶åå»å¡«å å®ï¼
const myArray = new Array("Hello", myVar, 3.14159);
// æ
const myArray = ["Mango", "Apple", "Orange"];
çè§£ length
å¨å®ç°å±é¢ï¼JavaScript å®é 䏿¯å°å ç´ ä½ä¸ºæ åçå¯¹è±¡å±æ§æ¥åå¨ï¼ææ°ç»ç´¢å¼ä½ä¸ºå±æ§åã
length 屿§æ¯ç¹æ®çï¼å¦æå卿åä¸ä¸ªå
ç´ ï¼åå
¶å¼æ»æ¯å¤§äºå
¶ç´¢å¼çæ£æ´æ°ï¼å¨ä¸é¢ç示ä¾ä¸ï¼'Dusty' çç´¢å¼æ¯ 30ï¼æä»¥ cats.length è¿å 30 + 1ï¼ã
è®°ä½ï¼JavaScript æ°ç»ç´¢å¼æ¯åºäº 0 çï¼å®ä»¬ä» 0 å¼å§ï¼è䏿¯ 1ãè¿æå³ç length 屿§å°æ¯æå¤§çç´¢å¼å¼å¤§ 1ï¼
const cats = [];
cats[30] = ["Dusty"];
console.log(cats.length); // 31
ä½ ä¹å¯ä»¥ç» length 屿§èµå¼ã
åä¸ä¸ªå°äºæ°ç»å
ç´ æ°éçå¼å°æªææ°ç»ï¼å 0 ä¼å½»åºæ¸
空æ°ç»ï¼
const cats = ["Dusty", "Misty", "Twiggy"];
console.log(cats.length); // 3
cats.length = 2;
console.log(cats); // [ 'Dusty', 'Misty' ] - Twiggy å·²ç»è¢«ç§»é¤äº
cats.length = 0;
console.log(cats); // è¾åº []ï¼ç«åç§°çæ°ç»ç°å¨å·²ç»ç©ºäº
cats.length = 3;
console.log(cats); // è¾åº [ <3 empty items> ]
éåæ°ç»
ä¸ç§å¸¸è§çæä½æ¯éåæ°ç»çå¼ï¼ä»¥æç§æ¹å¼å¤çæ¯ä¸ªå¼ãæç®åçæ¹æ³å¦ä¸ï¼
const colors = ["red", "green", "blue"];
for (let i = 0; i < colors.length; i++) {
console.log(colors[i]);
}
å¦æä½ ç¡®å®æ°ç»ä¸æ²¡æä¸ä¸ªå
ç´ æ±å¼ä¸º falseï¼ä¾å¦ï¼å¦æä½ çæ°ç»åªå
å« DOM èç¹ï¼ï¼ä½ å¯ä»¥éæ©ä¸ä¸ªæ´é«æçåæ³åï¼
const divs = document.getElementsByTagName("div");
for (let i = 0, div; (div = divs[i]); i++) {
/* 以æç§æ¹å¼å¤ç div */
}
è¿é¿å
äºæ£æ¥æ°ç»é¿åº¦çå¼éï¼å¹¶ç¡®ä¿ div åé卿¯æ¬¡å¾ªç¯æ¶é½è¢«éæ°èµå¼ç»å½å项ï¼ä»èå¢å äºä¾¿å©æ§ã
forEach() æ¹æ³æä¾äºéåæ°ç»å
ç´ çå
¶ä»æ¹æ³ï¼
const colors = ["red", "green", "blue"];
colors.forEach((color) => console.log(color));
// red
// green
// blue
ä¼ éç» forEach ç彿°å¯¹æ°ç»ä¸çæ¯ä¸ªå
ç´ æ§è¡ä¸æ¬¡ï¼æ°ç»å
ç´ ä½ä¸ºåæ°ä¼ éç»è¯¥å½æ°ãæªèµå¼çå¼ä¸ä¼å¨ forEach 循ç¯è¿ä»£ã
注æï¼å¨æ°ç»å®ä¹æ¶çç¥çå
ç´ ä¸ä¼å¨ forEach éåæ¶è¢«ååºï¼ä½æ¯æå¨èµå¼ä¸º undefined çå
ç´ æ¯ä¼è¢«ååºçï¼
const sparseArray = ["first", "second", , "fourth"];
sparseArray.forEach((element) => {
console.log(element);
});
// first
// second
// fourth
if (sparseArray[2] === undefined) {
console.log("sparseArray[2] æ¯ undefined"); // true
}
const nonsparseArray = ["first", "second", undefined, "fourth"];
nonsparseArray.forEach((element) => {
console.log(element);
});
// first
// second
// undefined
// fourth
ç±äº JavaScript å
ç´ è¢«ä¿å为æ åå¯¹è±¡å±æ§ï¼å æ¤ä¸å»ºè®®ä½¿ç¨ for...in 循ç¯éå JavaScript æ°ç»ï¼å 为æ®éå
ç´ åææå¯æä¸¾å±æ§é½å°è¢«ååºã
æ°ç»æ¹æ³
Array 对象å
·æä¸åæ¹æ³ï¼
concat() æ¹æ³è¿æ¥ä¸¤ä¸ªæå¤ä¸ªæ°ç»å¹¶è¿åä¸ä¸ªæ°çæ°ç»ã
let myArray = ["1", "2", "3"];
myArray = myArray.concat("a", "b", "c");
// myArray ç°å¨æ¯ ["1", "2", "3", "a", "b", "c"]
join() æ¹æ³å°æ°ç»ä¸çææå
ç´ è¿æ¥æä¸ä¸ªå符串ã
const myArray = ["Wind", "Rain", "Fire"];
const list = myArray.join(" - "); // list ç°å¨æ¯ "Wind - Rain - Fire"
push() æ¹æ³å¨æ°ç»æ«å°¾æ·»å ä¸ä¸ªæå¤ä¸ªå
ç´ ï¼å¹¶è¿åæ°ç»æä½åç lengthã
const myArray = ["1", "2"];
myArray.push("3"); // myArray ç°å¨æ¯ ["1", "2", "3"]
pop() æ¹æ³ä»æ°ç»ç§»åºæåä¸ä¸ªå
ç´ ï¼å¹¶è¿å该å
ç´ ã
const myArray = ["1", "2", "3"];
const last = myArray.pop();
// myArray ç°å¨æ¯ ["1", "2"]ï¼last 为 "3"
shift() æ¹æ³ä»æ°ç»ç§»åºç¬¬ä¸ä¸ªå
ç´ ï¼å¹¶è¿å该å
ç´ ã
const myArray = ["1", "2", "3"];
const first = myArray.shift();
// myArray ç°å¨æ¯ ["2", "3"]ï¼first 为 "1"
unshift() æ¹æ³å¨æ°ç»å¼å¤´æ·»å ä¸ä¸ªæå¤ä¸ªå
ç´ ï¼å¹¶è¿åæ°ç»çæ°é¿åº¦ã
const myArray = ["1", "2", "3"];
myArray.unshift("4", "5");
// myArray åæäº ["4", "5", "1", "2", "3"]
slice() æ¹æ³ä»æ°ç»æåä¸ä¸ªç段ï¼å¹¶ä½ä¸ºä¸ä¸ªæ°æ°ç»è¿åã
let myArray = ["a", "b", "c", "d", "e"];
myArray = myArray.slice(1, 4); // [ "b", "c", "d"]
// ä»ç´¢å¼ 1 å¼å§ï¼æåææçå
ç´ ï¼ç´å°ç´¢å¼ 3 为æ¢
at() æ¹æ³è¿åæ°ç»ä¸æå®ç´¢å¼å¤çå
ç´ ï¼å¦æç´¢å¼è¶
åºèå´ï¼åè¿å undefinedãå®ä¸»è¦ç¨äºä»æ°ç»æ«å°¾è®¿é®å
ç´ çè´ä¸æ ã
const myArray = ["a", "b", "c", "d", "e"];
myArray.at(-2); // "d"ï¼myArray çåæ°ç¬¬äºä¸ªå
ç´
splice() æ¹æ³ä»æ°ç»ç§»é¤ä¸äºå
ç´ ï¼å¹¶ï¼å¯éå°ï¼æ¿æ¢å®ä»¬ãå®è¿å仿°ç»ä¸å é¤çå
ç´ ã
const myArray = ["1", "2", "3", "4", "5"];
myArray.splice(1, 3, "a", "b", "c", "d");
// myArray ç°å¨æ¯ ["1", "a", "b", "c", "d", "5"]
// æ¬ä»£ç ä» 1 å·ç´¢å¼å¼å§ï¼æå
ç´ â2âæå¨çä½ç½®ï¼ï¼
// ç§»é¤ 3 个å
ç´ ï¼ç¶åå°åç»å
ç´ æå
¥å°é£ä¸ªä½ç½®ä¸ã
reverse() æ¹æ³åå°é¢ åæ°ç»å
ç´ ç顺åºï¼ç¬¬ä¸ä¸ªæ°ç»å
ç´ å为æåä¸ä¸ªæ°ç»å
ç´ ï¼æåä¸ä¸ªæ°ç»å
ç´ å为第ä¸ä¸ªæ°ç»å
ç´ ãå®è¿å对æ°ç»çå¼ç¨ã
const myArray = ["1", "2", "3"];
myArray.reverse();
// å°åæ°ç»é¢ åï¼myArray = [ "3", "2", "1" ]
flat() æ¹æ³è¿åä¸ä¸ªæ°æ°ç»ï¼ææåæ°ç»å
ç´ éå½å°è¿æ¥å°å
¶ä¸ï¼ç´å°æå®ç深度ã
let myArray = [1, 2, [3, 4]];
myArray = myArray.flat();
// myArray ç°å¨æ¯ [1, 2, 3, 4]ï¼å ä¸ºåæ°ç» [3, 4] 已被å±å¹³
sort() æ¹æ³å¯¹æ°ç»çå
ç´ è¿è¡éå½çæåºï¼å¹¶è¿å对æ°ç»çå¼ç¨ã
const myArray = ["Wind", "Rain", "Fire"];
myArray.sort();
// 对æ°ç»æåºï¼myArray = ["Fire", "Rain", "Wind"]
sort() ä¹å¯ä»¥æ¥ååè°å½æ°æ¥å³å®å¦ä½æ¯è¾æ°ç»å
ç´ ã使ç¨ä¸¤ä¸ªåæ°è°ç¨åè°å½æ°ï¼å®ä»¬æ¯æ¥èªæ°ç»ç两个å¼ãè¯¥å½æ°æ¯è¾è¿ä¸¤ä¸ªå¼å¹¶è¿åæ£æ°ãè´æ°æé¶ï¼è¡¨ç¤ºè¿ä¸¤ä¸ªå¼ç顺åºãä¾å¦ï¼ä»¥ä¸å½ä»¤å°æ ¹æ®å符串çæåä¸ä¸ªåæ¯å¯¹æ°ç»è¿è¡æåºï¼
const sortFn = (a, b) => {
if (a[a.length - 1] < b[b.length - 1]) {
return -1; // è´æ° => a < bï¼a å¨ b ä¹å
} else if (a[a.length - 1] > b[b.length - 1]) {
return 1; // æ£æ° => a > bï¼a å¨ b ä¹å
}
return 0; // 0 => a = bï¼a å b ä¿æåæ¥ç顺åº
};
myArray.sort(sortFn);
// 对æ°ç»æåºï¼myArray = ["Wind","Fire","Rain"]
- 妿
aå°äºbï¼è¿å-1ï¼æä»»ä½è´æ°ï¼ - 妿
a大äºbï¼è¿å1ï¼æä»»ä½æ£æ°ï¼ - 妿
aåbç¸çï¼è¿å0ã
indexOf() æ¹æ³å¨æ°ç»ä¸æç´¢ searchElement å¹¶è¿å第ä¸ä¸ªå¹é
çç´¢å¼ã
const a = ["a", "b", "a", "b", "a"];
console.log(a.indexOf("b")); // 1
// åè¯ä¸æ¬¡ï¼è¿æ¬¡ä»æå䏿¬¡å¹é
ä¹åå¼å§
console.log(a.indexOf("b", 2)); // 3
console.log(a.indexOf("z")); // -1, å 为æ¾ä¸å° 'z'
lastIndexOf() æ¹æ³çå·¥ä½åçç±»ä¼¼äº indexOfï¼ä½è¿æ¯ä»æ«å°¾å¼å§ï¼ååæç´¢ã
const a = ["a", "b", "c", "d", "a", "b"];
console.log(a.lastIndexOf("b")); // 5
// åè¯ä¸æ¬¡ï¼è¿æ¬¡ä»æå䏿¬¡å¹é
ä¹åå¼å§
console.log(a.lastIndexOf("b", 4)); // 1
console.log(a.lastIndexOf("z")); // -1
forEach() æ¹æ³å¯¹æ°ç»ä¸çæ¯ä¸ªå
ç´ æ§è¡ callback å¹¶è¿å undefinedã
const a = ["a", "b", "c"];
a.forEach((element) => {
console.log(element);
});
// è¾åºï¼
// a
// b
// c
æ¥ååè°ç forEach æ¹æ³ï¼ä»¥åä¸é¢çå
¶ä»æ¹æ³ï¼è¢«ç§°ä¸ºè¿ä»£æ¹æ³ï¼å 为å®ä»¬ä»¥æç§æ¹å¼éåæ´ä¸ªæ°ç»ãæ¯ä¸ªé½æ¥å第äºä¸ªå¯éçåæ° thisArgã妿æä¾ï¼thisArg å°æä¸ºåè°å½æ°ä½ä¸ this å
³é®åçå¼ãå¦ææ²¡ææä¾ï¼å°±åå¨æç¡®ç对象ä¸ä¸æä¹å¤è¢«è°ç¨ä¸æ ·ï¼å½å½æ°å¨ä¸¥æ ¼æ¨¡å¼ä¸æ¶ï¼this æ¯ undefinedï¼å½å½æ°å¨éä¸¥æ ¼æ¨¡å¼ä¸æ¶ï¼this å°å¼ç¨å
¨å±å¯¹è±¡ï¼windowãglobalThis çãï¼ã
夿³¨ï¼ä¸é¢ä»ç»ç sort() æ¹æ³ä¸æ¯è¿ä»£æ¹æ³ï¼å 为å®çåè°å½æ°åªç¨äºæ¯è¾ï¼ä¸è½åºäºå
ç´ é¡ºåºä»¥ä»»ä½ç¹å®é¡ºåºè°ç¨ãsort() ä¹ä¸æ¥å thisArg å½¢åã
map() æ¹æ³è¿åç±æ¯ä¸ªæ°ç»å
ç´ ä¸æ§è¡ callback çè¿åå¼æç»æçæ°æ°ç»ã
const a1 = ["a", "b", "c"];
const a2 = a1.map((item) => item.toUpperCase());
console.log(a2); // ['A', 'B', 'C']
flatMap() æ¹æ³å
æ§è¡ map()ï¼åæ§è¡æ·±åº¦ä¸º 1 ç flat()ã
const a1 = ["a", "b", "c"];
const a2 = a1.flatMap((item) => [item.toUpperCase(), item.toLowerCase()]);
console.log(a2); // ['A', 'a', 'B', 'b', 'C', 'c']
filter() æ¹æ³è¿åä¸ä¸ªæ°æ°ç»ï¼å
¶ä¸å
å« callback è¿å true çå
ç´ ã
const a1 = ["a", 10, "b", 20, "c", 30];
const a2 = a1.filter((item) => typeof item === "number");
console.log(a2); // [10, 20, 30]
find() æ¹æ³è¿å callback è¿å true ç第ä¸ä¸ªå
ç´ ã
const a1 = ["a", 10, "b", 20, "c", 30];
const i = a1.find((item) => typeof item === "number");
console.log(i); // 10
findLast() æ¹æ³è¿å callback è¿å true çæåä¸ä¸ªå
ç´ ã
const a1 = ["a", 10, "b", 20, "c", 30];
const i = a1.findLast((item) => typeof item === "number");
console.log(i); // 30
findIndex() æ¹æ³è¿å callback è¿å true ç第ä¸ä¸ªå
ç´ çç´¢å¼ã
const a1 = ["a", 10, "b", 20, "c", 30];
const i = a1.findIndex((item) => typeof item === "number");
console.log(i); // 1
findLastIndex() æ¹æ³è¿å callback è¿å true çæåä¸ä¸ªå
ç´ çç´¢å¼ã
const a1 = ["a", 10, "b", 20, "c", 30];
const i = a1.findLastIndex((item) => typeof item === "number");
console.log(i); // 5
妿 callback 对æ°ç»ä¸çæ¯ä¸ä¸ªå
ç´ é½è¿å trueï¼å every() æ¹æ³è¿å trueã
function isNumber(value) {
return typeof value === "number";
}
const a1 = [1, 2, 3];
console.log(a1.every(isNumber)); // true
const a2 = [1, "2", 3];
console.log(a2.every(isNumber)); // false
妿 callback 对æ°ç»ä¸è³å°ä¸ä¸ªå
ç´ è¿å trueï¼å some() æ¹æ³è¿å trueã
function isNumber(value) {
return typeof value === "number";
}
const a1 = [1, 2, 3];
console.log(a1.some(isNumber)); // true
const a2 = [1, "2", 3];
console.log(a2.some(isNumber)); // true
const a3 = ["1", "2", "3"];
console.log(a3.some(isNumber)); // false
reduce() æ¹æ³å¯¹æ°ç»ä¸çæ¯ä¸ªå¼æ§è¡ callback(accumulator, currentValue, currentIndex, Array)ï¼ç®çæ¯å°å表ä¸çå
ç´ åå°å°å个å¼ãreduce 彿°è¿å callback 彿°è¿åçæç»å¼ã
妿æå®äº initialValueï¼åè°ç¨ callbackï¼å¹¶å° initialValue ä½ä¸ºç¬¬ä¸ä¸ªåæ°å¼ï¼å°æ°ç»ä¸ç¬¬ä¸ä¸ªå
ç´ çå¼ä½ä¸ºç¬¬äºä¸ªåæ°å¼ã
å¦ææ²¡ææå® initialValueï¼é£ä¹ callback çåä¸¤ä¸ªåæ°å¼å°æ¯æ°ç»ç第ä¸ä¸ªå第äºä¸ªå
ç´ ãä¹åçæ¯ä¸æ¬¡è°ç¨ï¼ç¬¬ä¸ä¸ªåæ°çå¼å°æ¯åä¸ä¸ªè°ç¨ä¸è¿åç callbackï¼ç¬¬äºä¸ªåæ°çå¼å°æ¯æ°ç»ä¸çä¸ä¸ä¸ªå¼ã
妿 callback éè¦è®¿é®æ£å¨å¤ççå
ç´ çç´¢å¼ï¼æè
è®¿é®æ´ä¸ªæ°ç»ï¼å®ä»¬å¯ä»¥ä½ä¸ºå¯éåæ°ã
const a = [10, 20, 30];
const total = a.reduce(
(accumulator, currentValue) => accumulator + currentValue,
0,
);
console.log(total); // 60
reduceRight() æ¹æ³çå·¥ä½åçç±»ä¼¼äº reduce()ï¼ä½ä»æåä¸ä¸ªå
ç´ å¼å§ã
reduce å reduceRight æ¯è¿ä»£æ°ç»æ¹æ³ä¸æä¸è¢«äººçç¥çä¸¤ä¸ªå½æ°ãå®ä»¬åºè¯¥ä½¿ç¨å¨é£äºéè¦ææ°ç»çå
ç´ ä¸¤ä¸¤éå½å¤çï¼å¹¶æç»è®¡ç®æä¸ä¸ªåä¸ç»æçç®æ³ã
ç¨çæ°ç»
æ°ç»å¯ä»¥å
å«â空槽âï¼è¿ä¸ç¨å¼ undefined å¡«å
çæ§½ä¸ä¸æ ·ã空槽å¯ä»¥éè¿ä»¥ä¸æ¹å¼ä¹ä¸å建ï¼
// Array æé 彿°ï¼
const a = Array(5); // [ <5 empty items> ]
// æ°ç»åé¢éä¸çè¿ç»éå·ï¼
const b = [1, 2, , , 5]; // [ 1, 2, <2 empty items>, 5 ]
// ç´æ¥ç»å¤§äº array.length çç´¢å¼è®¾ç½®å¼ä»¥å½¢æç©ºæ§½ï¼
const c = [1, 2];
c[4] = 5; // [ 1, 2, <2 empty items>, 5 ]
// éè¿ç´æ¥è®¾ç½® .length æé¿ä¸ä¸ªæ°ç»ï¼
const d = [1, 2];
d.length = 5; // [ 1, 2, <3 empty items> ]
// å é¤ä¸ä¸ªå
ç´ ï¼
const e = [1, 2, 3, 4, 5];
delete e[2]; // [ 1, 2, <1 empty item>, 4, 5 ]
å¨æäºæä½ä¸ï¼ç©ºæ§½çè¡ä¸ºå°±åå®ä»¬è¢«å¡«å
¥äº undefined 飿 ·ã
const arr = [1, 2, , , 5]; // å建ä¸ä¸ªç¨çæ°ç»
// éè¿ç´¢å¼è®¿é®
console.log(arr[2]); // undefined
// For...of
for (const i of arr) {
console.log(i);
}
// è¾åºï¼1 2 undefined undefined 5
// å±å¼è¿ç®
const another = [...arr]; // "another" 为 [ 1, 2, undefined, undefined, 5 ]
å¨å ¶ä»æ¹æ³ï¼ç¹å«æ¯æ°ç»è¿ä»£æ¹æ³æ¶ï¼ç©ºæ§½æ¯è¢«è·³è¿çã
const mapped = arr.map((i) => i + 1); // [ 2, 3, <2 empty items>, 6 ]
arr.forEach((i) => console.log(i)); // 1 2 5
const filtered = arr.filter(() => true); // [ 1, 2, 5 ]
const hasFalsy = arr.some((k) => !k); // false
// 屿§è¿ä»£
const keys = Object.keys(arr); // [ '0', '1', '4' ]
for (const key in arr) {
console.log(key);
}
// è¾åºï¼'0' '1' '4'
// å¨å¯¹è±¡ä¸ä½¿ç¨å±å¼ï¼ä½¿ç¨å±æ§æä¸¾ï¼è䏿¯æ°ç»çè¿ä»£å¨
const objectSpread = { ...arr }; // { '0': 1, '1': 2, '4': 5 }
å
³äºæ°ç»æ¹æ³å¨ç¨çæ°ç»ä¸çè¡ä¸ºç宿´å表ï¼è¯·åè§ Array åè页ã
å¤ç»´æ°ç»
æ°ç»æ¯å¯ä»¥åµå¥çï¼è¿å°±æå³çä¸ä¸ªæ°ç»å¯ä»¥ä½ä¸ºä¸ä¸ªå ç´ è¢«å å«å¨å¦å¤ä¸ä¸ªæ°ç»éé¢ãå©ç¨ JavaScript æ°ç»çè¿ä¸ªç¹æ§ï¼å¯ä»¥å建å¤ç»´æ°ç»ã
以ä¸ä»£ç å建äºä¸ä¸ªäºç»´æ°ç»ã
const a = new Array(4);
for (i = 0; i < 4; i++) {
a[i] = new Array(4);
for (j = 0; j < 4; j++) {
a[i][j] = "[" + i + "," + j + "]";
}
}
è¿ä¸ªä¾ååå»ºçæ°ç»æ¥æä»¥ä¸è¡æ°æ®ï¼
Row 0: [0,0] [0,1] [0,2] [0,3] Row 1: [1,0] [1,1] [1,2] [1,3] Row 2: [2,0] [2,1] [2,2] [2,3] Row 3: [3,0] [3,1] [3,2] [3,3]
ä½¿ç¨æ°ç»åå¨å ¶ä»å±æ§
æ°ç»ä¹å¯ä»¥åå¯¹è±¡é£æ ·ä½¿ç¨ï¼ä»¥åå¨ç¸å ³ä¿¡æ¯ï¼
const arr = [1, 2, 3];
arr.property = "value";
console.log(arr.property); // "value"
ä¾å¦ï¼å½ä¸ä¸ªæ°ç»ä½ä¸ºåç¬¦ä¸²åæ£å表达å¼çå¹é
ç»ææ¶ï¼è¯¥æ°ç»å°ä¼è¿åç¸å
³å¹é
ä¿¡æ¯ç屿§åå
ç´ ãRegExp.prototype.exec()ãString.prototype.match() å String.prototype.split() çè¿å弿¯ä¸ä¸ªæ°ç»ãä½¿ç¨æ°ç»åæ£å表达å¼çæ´å¤ä¿¡æ¯ï¼åè§æ£å表达å¼ã
使ç¨ç±»æ°ç»å¯¹è±¡
ä¸äº JavaScript 对象ï¼å¦ document.getElementsByTagName() è¿åç NodeList æ arguments ç JavaScript å¯¹è±¡ï¼æä¸æ°ç»ç¸ä¼¼çè¡ä¸ºï¼ä½å®ä»¬å¹¶ä¸å
±äº«æ°ç»çæææ¹æ³ãarguments 对象æä¾äº length 屿§ï¼ä½æ²¡æå®ç°å¦ forEach() çæ°ç»æ¹æ³ã
ä¸è½ç´æ¥å¨ç±»æ°ç»å¯¹è±¡ä¸è°ç¨æ°ç»æ¹æ³ã
function printArguments() {
arguments.forEach((item) => {
console.log(item);
}); // TypeError: arguments.forEach is not a function
}
ä½ä½ å¯ä»¥éè¿ Function.prototype.call() é´æ¥è°ç¨å®ä»¬ã
function printArguments() {
Array.prototype.forEach.call(arguments, (item) => {
console.log(item);
});
}
æ°ç»ååæ¹æ³ä¹å¯ä»¥ç¨äºå符串ï¼å 为å®ä»¬ä»¥ç±»ä¼¼äºæ°ç»çæ¹å¼æä¾å¯¹å ¶ä¸å符ç顺åºè®¿é®ï¼
Array.prototype.forEach.call("a string", (chr) => {
console.log(chr);
});