1. 程式人生 > 實用技巧 >js查詢和篩選的幾種方式

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];