forEach()
forEach()
是一個JavaScript方法,用於呼叫 陣列 的每個元素,並將元素傳遞給回撥函式。 forEach()
對於空陣列是不會執行回撥函式的。
示例:
let a=[4,2,3,5];
let b=[];
a.forEach( i => console.log(i) ); //依次輸出4,2,3,5
b.forEach( i => console.log(i) ); //undefined(對於空陣列是不會執行回撥函式)
a.forEach((item,index,arr) => { //第一個引數item表示當前元素,第二個引數index表示當前元素索引值,第三個元素表示當前元素所在的陣列
console.log(item +'-'+ index); //依次輸出 4-0,2-1,3-5,5-3
console.log(arr); //全部輸出[4,2,3,5](原陣列a)
});
複製程式碼
some()
some()
方法用於檢測陣列中是否存在滿足指定條件(函式提供)的元素。
some()
方法會依次執行陣列的每個元素:
如果有一個元素滿足條件,則表示式返回true , 剩餘的元素不會再執行檢測。 如果沒有滿足條件的元素,則返回false。
some()
不會對空陣列進行檢測。
some()
不會改變原始陣列。
示例:
let b=[
{age:20,name:'tom'},
{age:30,name:'jack'},
{age:40,name:'jerry'},
{age:50,name:'jinx'},
]
b.some( i => i.age>30 ); //true
b.some( i => i.age>70 ); //false
複製程式碼
indexOf()
indexOf()
方法返回在陣列中可以找到一個給定元素的第一個索引,如果不存在,則返回-1。
返回值為首個被找到的元素在陣列中的索引位置; 若沒有找到則返回 -1。
示例:
let a = [2, 9, 7, 8, 9];
a.indexOf(2); // 0
a.indexOf(6); // -1
a.indexOf(7); // 2
複製程式碼
every()
every()
方法測試陣列的所有元素是否都通過了指定函式的測試。
示例:
let a=[1,3,5,7,9,20]
a.every( i => i>6 ); //false
a.every( i => i>0 ); //true
複製程式碼
find()
find()
方法返回陣列中滿足提供的測試函式的第一個元素的值。否則返回 undefined
示例:
let a=[1,3,5,7,9,20]
a.find( i => i>6 ); //返回7(第一個滿足條件的元素)
複製程式碼
filter()
filter()
方法建立一個新陣列, 其包含通過所提供函式實現的測試的所有元素。
示例:
let a=[1,3,5,7,9,20]
a.filter( i => i>6 ); //返回新陣列 [7,9,20]
let [...spread]= [12, 5, 8, 130, 44]; //等同於:let spread = 淺克隆([12, 5, 8, 130, 44])
let filtered = spread.filter( i => i>10 );
console.log(filtered); //返回[12, 130, 44]
複製程式碼
for···in
for···in
語句用於迴圈物件屬性。注意不要使用 for···in
語句來迴圈陣列的索引,你可以使用 for
語句替代。
let person = {fname:"John", lname:"Doe", age:25};
for (let x in person) {
console.log(person[x]); //依次輸出John,Doe,25
}
複製程式碼
for···of
這一部分強烈推薦自行查閱 MDN文件
for...of
語句在可迭代物件(包括 Array,Map,Set,String,TypedArray,arguments 物件等等)上建立一個迭代迴圈,呼叫自定義迭代鉤子,併為每個不同屬性的值執行語句。
let person = [{name:'tom',age:'20'},{name:'lee',age:'21'},{name:'lin',age:'30'}]
for (let x of person) { //依次輸出每個元素
console.log(x); //依次輸出:{name: "tom", age: "20"},{name: "lee", age: "21"},{name: "lin", age: "30"}
}
for (let x of person.keys()) { //依次輸出每個元素的索引值
console.log(x); //依次輸出:0,1,2
}
複製程式碼
for···in
與 for···of
的區別:
無論是for...in
還是for...of
語句都是迭代一些東西。它們之間的主要區別在於它們的迭代方式。
for...in
語句以原始插入順序迭代物件的可列舉屬性。
for...of
語句遍歷可迭代物件定義要迭代的資料。
Object.prototype.objCustom = function() {};
Array.prototype.arrCustom = function() {};
let iterable = [3, 5, 7];
iterable.foo = 'hello';
for (let i in iterable) {
console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}
for (let i of iterable) {
console.log(i); // logs 3, 5, 7
}
複製程式碼
待補充
map()
set()
// 去除陣列的重複成員
[...new Set(array)]
複製程式碼