js查詢和篩選的幾種方式
find();
find() 方法返回通過測試(函式內判斷)的陣列的第一個元素的值。
find() 方法為陣列中的每個元素都呼叫一次函式執行:
當陣列中的元素在測試條件時返回true時, find() 返回符合條件的元素,之後的值不會再呼叫執行函式。
如果沒有符合條件的元素返回 undefined
注意:find() 對於空陣列,函式是不會執行的。
注意:find() 並沒有改變陣列的原始值。
[1,2,3,4,5,6].find((n) => n < 5)
//找出陣列中第一個大於5 的成員
// 6
array.find(function(currentValue, index, arr),thisValue)
currentValue : 必需。當前元素
index:可選。當前元素的索引值
arr: 可選。當前元素所屬的陣列物件
thisValue: 可選。 傳遞給函式的值一般用 "this" 值。
如果這個引數為空, "undefined" 會傳遞給 "this" 值
findIndex();
findIndex() 方法返回傳入一個測試條件(函式)符合條件的陣列第一個元素位置。
findIndex() 方法為陣列中的每個元素都呼叫一次函式執行:
當陣列中的元素在測試條件時返回true時, findIndex() 返回符合條件的元素的索引位置,之後的值不會再呼叫執行函式。
如果沒有符合條件的元素返回 -1
注意:findIndex() 對於空陣列,函式是不會執行的。
注意:findIndex() 並沒有改變陣列的原始值。
[3,10,18,19].findIndex((n) => n >= 18)
//返回符合條件的值的位置(索引)
// 2
array.findIndex(function(currentValue, index, arr),thisValue)
currentValue : 必需。當前元素
index:可選。當前元素的索引值
arr: 可選。當前元素所屬的陣列物件
thisValue: 可選。 傳遞給函式的值一般用 "this" 值。
如果這個引數為空, "undefined" 會傳遞給 "this" 值
filter();
filter() 方法建立一個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。(返回陣列,包含了符合條件的所有元素。如果沒有符合條件的元素則返回空陣列。)
注意:filter() 不會改變原始陣列。
注意:filter() 不會對空陣列進行檢測。
var arr = [1,2,3,4,5,6,7] var newArr = arr.filter(item => item > 5); console.log(newArr); //[6, 7] array.filter(function(currentValue, index, arr),thisValue) currentValue : 必需。當前元素 index:可選。當前元素的索引值 arr: 可選。當前元素所屬的陣列物件 thisValue: 可選。 傳遞給函式的值一般用 "this" 值。 如果這個引數為空, "undefined" 會傳遞給 "this" 值 //陣列去重 var arr = [1,2,2,3,4,4,5,6,6,7,8,8,9]; var newArr = arr.filter((x, index,self)=>self.indexOf(x) === index) console.log(newArr); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
indexOf();
indexOf() 方法可返回某個指定的字串值在字串中首次出現的位置。
註釋:indexOf() 方法對大小寫敏感!
註釋:如果要檢索的字串值沒有出現,則該方法返回 -1。
lastIndexOf() 方法可返回一個指定的字串值最後出現的位置,在一個字串中的指定位置從後向前搜尋。
stringObject.indexOf(searchvalue,fromindex)該方法將從頭到尾地檢索字串 stringObject,看它是否含有子串 searchvalue。開始檢索的位置在字串的 fromindex 處或字串的開頭(沒有指定 fromindex 時)。如果找到一個 searchvalue,則返回 searchvalue的第一次出現的位置。stringObject 中的字元位置是從 0 開始的。
var str= "aaa456ac";
console.log(arr.indexOf(‘b‘)); // -1 , 字元b第一次出現的位置,沒有,返回-1;
console.log(arr.indexOf(‘a‘)); // 0 , 字元a第一次出現的位置,是 0
console.log(arr.indexOf(‘a‘, 3)); // 6, 從第四個字元位置開始往後繼續查詢,包含當前位置
console.log(arr.indexOf(‘ac‘, 3)); // 6, 字串ac第一次出現的位置
console.log(arr.lastIndexOf(‘a‘)); // 6, 字串a最後出現的位置
some() ;
some() 方法用於檢測陣列中的元素是否滿足指定條件(函式提供)。
some() 方法會依次執行陣列的每個元素:
如果有一個元素滿足條件,則表示式返回true , 剩餘的元素不會再執行檢測。
如果沒有滿足條件的元素,則返回false。
注意:some() 不會對空陣列進行檢測。
注意:some() 不會改變原始陣列。
array.some(function(currentValue,index,arr),thisValue)
var arr = [1,2,3,4,5,6,7]
var isHas = arr.some(item => item > 5);
console.log(isHas ); // true
var isHas2 = arr.some(item => item > 7);
console.log(isHas2 ); // false
every() ;
every() 方法用於檢測陣列所有元素是否都符合指定條件(通過函式提供)。
every() 方法使用指定函式檢測陣列中的所有元素:
如果陣列中檢測到有一個元素不滿足,則整個表示式返回 false ,且剩餘的元素不會再進行檢測。
如果所有元素都滿足條件,則返回 true。
注意:every() 不會對空陣列進行檢測。
注意:every() 不會改變原始陣列。
array.every(function(currentValue,index,arr), thisValue)
var arr = [1,2,3,4,5,6,7]
var isHas = arr.every(item => item > 5);
console.log(isHas ); // false
var isHas2 = arr.every(item => item < 8);
console.log(isHas2 ); // true
JavaScript迴圈
for- 多次遍歷程式碼塊
for/in- 遍歷物件屬性
while- 當指定條件為 true 時迴圈一段程式碼塊
do/while- 當指定條件為 true 時迴圈一段程式碼塊
for (i = 0; i < 5; i++) {
text += "數字是 " + i + "<br>";
console.log(text); // 0,1,2,3,4
}
For/In 迴圈
JavaScriptfor/in語句遍歷物件的屬性:
for/in 遍歷物件時, key表示物件的屬性;
var person = {fname:"Bill", lname:"Gates", age:62};
var text = "";for (var key in person) {
text += person[key] + "-";
}
console.log(text); // Bill-Gates-62
for/in 遍歷陣列時, key表示陣列的index索引;
var arr = [20,40,50];
var text = "";
for (var key in arr ) {
text += arr[key] + "-";
}
console.log(text); // 20-40-50
For/Of 迴圈
for of 迴圈是 Es6 中新增的語句,用來替代 for in 和 forEach,它允許你遍歷 Arrays(陣列), Strings(字串), Maps(對映), Sets(集合)等
可迭代(Iterable data)的資料結構,注意它的相容性。
let arr = [1,2,3];
for(let i of arr){
console.log(i)
}
// 1
// 2
// 3
資源搜尋網站大全 https://www.renrenfan.com.cn 廣州VI設計公司https://www.houdianzi.com
forEach();
forEach() 方法用於呼叫陣列的每個元素,並將元素傳遞給回撥函式。
注意:forEach() 對於空陣列是不會執行回撥函式的。
array.forEach(function(currentValue,index,arr),thisValue)
var arr = [1,2,3,4] ;
arr.forEach(function(item,index, myarr){
console.log(item);
// 1
// 2
// 3
// 4
// myarr: [1,2,3,4]
});
map();
map() 方法返回一個新陣列,陣列中的元素為原始陣列元素呼叫函式處理後的值。
map() 方法按照原始陣列元素順序依次處理元素。
注意:map() 不會對空陣列進行檢測。
注意:map() 不會改變原始陣列。
array.map(function(currentValue,index,arr),thisValue)
var numbers = [4, 9, 7, 5];
var newArr= numbers .map(function (item) { //接收新陣列
return item * 2;
});
console.log(newArr); // [8, 18, 14, 10];