Baseline Widely available
filter()
æ¹æ³å建ç»å®æ°ç»ä¸é¨åçæµ
æ·è´ï¼å
¶å
å«éè¿ææä¾å½æ°å®ç°çæµè¯çææå
ç´ ã
const words = ["spray", "elite", "exuberant", "destruction", "present"];
const result = words.filter((word) => word.length > 6);
console.log(result);
// Expected output: Array ["exuberant", "destruction", "present"]
è¯æ³
filter(callbackFn)
filter(callbackFn, thisArg)
åæ°
callbackFn
为æ°ç»ä¸çæ¯ä¸ªå ç´ æ§è¡ç彿°ãå®åºè¯¥è¿åä¸ä¸ªçå¼ä»¥å°å ç´ ä¿çå¨ç»ææ°ç»ä¸ï¼å¦åè¿åä¸ä¸ªåå¼ãè¯¥å½æ°è¢«è°ç¨æ¶å°ä¼ å ¥ä»¥ä¸åæ°ï¼
element
æ°ç»ä¸å½åæ£å¨å¤ççå ç´ ã
index
æ£å¨å¤ççå ç´ å¨æ°ç»ä¸çç´¢å¼ã
array
è°ç¨äº filter()
çæ°ç»æ¬èº«ã
thisArg
å¯é
æ§è¡ callbackFn
æ¶ç¨ä½ this
çå¼ãåè§è¿ä»£æ¹æ³ã
è¿åç»å®æ°ç»çä¸é¨åçæµ æ·è´ï¼å ¶ä¸åªå æ¬éè¿æä¾ç彿°å®ç°çæµè¯çå ç´ ãå¦ææ²¡æå ç´ éè¿æµè¯ï¼åè¿åä¸ä¸ªç©ºæ°ç»ã
æè¿°filter()
æ¹æ³æ¯ä¸ä¸ªè¿ä»£æ¹æ³ãå®ä¸ºæ°ç»ä¸çæ¯ä¸ªå
ç´ è°ç¨æä¾ç callbackFn
彿°ä¸æ¬¡ï¼å¹¶æé ä¸ä¸ªç±ææè¿åçå¼çå
ç´ å¼ç»æçæ°æ°ç»ãæªéè¿ callbackFn
æµè¯çæ°ç»å
ç´ ä¸ä¼å
å«å¨æ°æ°ç»ä¸ã
callbackFn
ä»
对已åé
å¼çæ°ç»ç´¢å¼è°ç¨ãå®ä¸ä¼å¯¹ç¨çæ°ç»ä¸ç空槽è°ç¨ã
filter()
æ¹æ³æ¯ä¸ä¸ªå¤å¶æ¹æ³ãå®ä¸ä¼æ¹å this
ï¼èæ¯è¿åä¸ä¸ªå
å«ä¸åå§æ°ç»ç¸åçå
ç´ ï¼å
¶ä¸æäºå
ç´ å·²è¢«è¿æ»¤æï¼çæµ
æ·è´ã使¯ï¼ä½ä¸º callbackFn
ç彿°å¯ä»¥æ´æ¹æ°ç»ã请注æï¼å¨ç¬¬ä¸æ¬¡è°ç¨ callbackFn
ä¹åï¼æ°ç»çé¿åº¦å·²ç»è¢«ä¿åãå æ¤ï¼
filter()
æ¶ï¼callbackFn
å°ä¸ä¼è®¿é®è¶
åºæ°ç»åå§é¿åº¦çä»»ä½å
ç´ ãcallbackFn
ãcallbackFn
æ´æ¹ï¼åå®ä¼ éç» callbackFn
çå¼å°æ¯è¯¥å
ç´ è¢«ä¿®æ¹åçå¼ã被å é¤çå
ç´ åä¸ä¼è¢«è®¿é®ãè¦åï¼ ä¸è¿°ç±»åçå¹¶åä¿®æ¹ç»å¸¸å¯¼è´é¾ä»¥çè§£ç代ç ï¼é常åºé¿å ï¼ç¹æ®æ åµé¤å¤ï¼ã
filter()
æ¹æ³æ¯éç¨çãå®åªææ this
å¼å
·æ length
屿§åæ´æ°é®å±æ§ã
以ä¸ç¤ºä¾ä½¿ç¨ filter()
å建ä¸ä¸ªè¿æ»¤æ°ç»ï¼è¯¥æ°ç»å é¤äºææå¼å°äº 10
çå
ç´ ã
function isBigEnough(value) {
return value >= 10;
}
const filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
æ¾åºæ°ç»ä¸ææçç´ æ°
ä¸é¢çä¾åè¿åæ°ç»ä¸çææç´ æ°ï¼
const array = [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
function isPrime(n) {
if (n < 2) {
return false;
}
if (n % 2 === 0) {
return n === 2;
}
for (let factor = 3; factor * factor <= n; factor += 2) {
if (n % factor === 0) {
return false;
}
}
return true;
}
console.log(array.filter(isPrime)); // [2, 3, 5, 7, 11, 13]
夿³¨ï¼ isPrime()
å®ç°ä»
便¼ç¤ºãå¨å®é
åºç¨ä¸ï¼ä¸ºäºé¿å
éå¤è®¡ç®ï¼ä¼ä½¿ç¨å¤§éè®°å¿åçç®æ³ï¼ä¾å¦åæææ¯ç¹å°¼çæ³ã
以ä¸ç¤ºä¾ä½¿ç¨ filter()
å建å
·æéé¶ id
çå
ç´ ç jsonã
const arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: "undefined" },
];
let invalidEntries = 0;
function filterByID(item) {
if (Number.isFinite(item.id) && item.id !== 0) {
return true;
}
invalidEntries++;
return false;
}
const arrByID = arr.filter(filterByID);
console.log("è¿æ»¤åçæ°ç»\n", arrByID);
// è¿æ»¤åçæ°ç»
// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
console.log("æ ææ¡ç®æ°é =", invalidEntries);
// æ ææ¡ç®æ°é = 5
卿°ç»ä¸æç´¢
ä¸ä¾ä½¿ç¨ filter()
æ ¹æ®æç´¢æ¡ä»¶æ¥è¿æ»¤æ°ç»å
容ã
const fruits = ["apple", "banana", "grapes", "mango", "orange"];
/**
* æ ¹æ®æç´¢æ¡ä»¶ï¼æ¥è¯¢ï¼çéæ°ç»é¡¹
*/
function filterItems(arr, query) {
return arr.filter((el) => el.toLowerCase().includes(query.toLowerCase()));
}
console.log(filterItems(fruits, "ap")); // ['apple', 'grapes']
console.log(filterItems(fruits, "an")); // ['banana', 'mango', 'orange']
å¨ç¨çæ°ç»ä¸ä½¿ç¨ filter()
filter()
å°è·³è¿ç©ºæ§½ã
console.log([1, , undefined].filter((x) => x === undefined)); // [undefined]
console.log([1, , undefined].filter((x) => x !== 2)); // [1, undefined]
å¨éæ°ç»å¯¹è±¡ä¸è°ç¨ filter()
filter()
æ¹æ³è¯»å this
ç length
屿§ï¼ç¶åè®¿é®æ¯ä¸ªæ´æ°ç´¢å¼ã
const arrayLike = {
length: 3,
0: "a",
1: "b",
2: "c",
};
console.log(Array.prototype.filter.call(arrayLike, (x) => x <= "b"));
// [ 'a', 'b' ]
å½±ååå§æ°ç»ï¼ä¿®æ¹ã追å åå é¤ï¼
ä¸é¢çç¤ºä¾æµè¯å¨ä¿®æ¹æ°ç»æ¶ filter()
æ¹æ³çè¡ä¸ºã
// ä¿®æ¹æ¯ä¸ªåè¯
let words = ["spray", "limit", "exuberant", "destruction", "elite", "present"];
const modifiedWords = words.filter((word, index, arr) => {
arr[index + 1] += " extra";
return word.length < 6;
});
console.log(modifiedWords);
// 注æï¼å¨é¿åº¦ä¸º 6 以䏿ä¸ä¸ªåè¯ï¼ä½æ¯ç±äºå®ä»¬å·²ç»è¢«ä¿®æ¹ï¼æä»¥è¿åä¸ä¸ªåè¯
// ["spray"]
// æ·»å æ°åè¯
words = ["spray", "limit", "exuberant", "destruction", "elite", "present"];
const appendedWords = words.filter((word, index, arr) => {
arr.push("new");
return word.length < 6;
});
console.log(appendedWords);
// åªæä¸ä¸ªç¬¦åæ¡ä»¶ï¼å³ä½¿ `words` æ¬èº«ç°å¨ææ´å¤å符é¿åº¦å°äº 6 çåè¯
// ["spray" ,"limit" ,"elite"]
// å é¤åè¯
words = ["spray", "limit", "exuberant", "destruction", "elite", "present"];
const deleteWords = words.filter((word, index, arr) => {
arr.pop();
return word.length < 6;
});
console.log(deleteWords);
// 注ææä»¬æ²¡æå¾å° 'elite'ï¼å 为å®å¨è¿æ»¤å¨è®¿é®å°å®ä¹å就已ç»ä» 'words' å¼¹åºäº
// ["spray" ,"limit"]
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4