Baseline Widely available
Array
實ä¾ç filter()
æ¹æ³æå»ºç«ä¸å給å®é£åé¨åçæ·ºè¤è£½ï¼éæ¿¾ææªééææä¾å½å¼æå¯¦ä½æ¸¬è©¦ç給å®é£åå
ç´ ã
const words = ["spray", "elite", "exuberant", "destruction", "present"];
const result = words.filter((word) => word.length > 6);
console.log(result);
// é æè¼¸åºï¼Array ["exuberant", "destruction", "present"]
èªæ³
filter(callbackFn)
filter(callbackFn, thisArg)
忏
callbackFn
éå°é£å䏿¯åå ç´ å·è¡çå½å¼ã宿åå³ä¸åçå¼ä»¥ä¿ç該å ç´ æ¼çµæé£åä¸ï¼å¦ååå³å½å¼ã該å½å¼ææ¥æ¶ä»¥ä¸å¼æ¸ï¼
element
é£åä¸ç¶åèççå ç´ ã
index
é£åä¸ç¶åèçå ç´ çç´¢å¼ã
array
è°ç¨ filter()
çé£åã
thisArg
鏿æ§
å·è¡ callbackFn
æç¨ä½ this
çå¼ãè«åé±è¿ä»£æ¹æ³ã
ä¸åå å«é鿏¬è©¦å ç´ ç給å®é£åæ·ºè¤è£½ãè¥ç¡å ç´ é鿏¬è©¦ï¼ååå³ç©ºé£åã
æè¿°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);
// éæ¿¾å¾çº [12, 130, 44]
æ¾åºé£åä¸çææè³ªæ¸
以ä¸ç¯ä¾åå³é£åä¸çææè³ªæ¸ï¼
const array = [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
function isPrime(num) {
for (let i = 2; num > i; i++) {
if (num % i === 0) {
return false;
}
}
return num > 1;
}
console.log(array.filter(isPrime)); // [2, 3, 5, 7, 11, 13]
å¾ JSON ä¸éæ¿¾ç¡ææ¢ç®
以ä¸ç¯ä¾ä½¿ç¨ filter()
建ç«ä¸åéæ¿¾å¾ç JSONï¼å
å
å«éé¶ä¸çºæ¸å¼ç id
å
ç´ ã
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']
ä½¿ç¨ callbackFn ç第ä¸å弿¸
array
弿¸å¨ä½ æ³ååé£åä¸å
¶ä»å
ç´ æç¹å¥æç¨ï¼å°¤å
¶æ¯ç¶ä½ æ²æç¾æçè®æ¸æå該é£åæã以ä¸ç¯ä¾é¦å
ä½¿ç¨ map()
徿¯ååç¨±ä¸æåæ¸å IDï¼ç¶å¾ä½¿ç¨ filter()
é¸åºæ¯å
¶é°å±
大ç IDã
const names = ["JC63", "Bob132", "Ursula89", "Ben96"];
const greatIDs = names
.map((name) => parseInt(name.match(/\d+/)[0], 10))
.filter((id, idx, arr) => {
// è¥æ²æ arr 弿¸ï¼ç¡æ³è¼é¬ååä¸éé£åï¼é¤éå°å
¶å²åå°è®æ¸ä¸ã
if (idx > 0 && id <= arr[idx - 1]) return false;
if (idx < arr.length - 1 && id <= arr[idx + 1]) return false;
return true;
});
console.log(greatIDs); // [132, 96]
array
弿¸ä¸æ¯æ£å¨æ§å»ºçé£åââå¨åå¼å½å¼ä¸ç¡æ³å忣卿§å»ºçé£åã
filter()
æè·³é空槽ã
console.log([1, , undefined].filter((x) => x === undefined)); // [undefined]
console.log([1, , undefined].filter((x) => x !== 2)); // [1, undefined]
å¨éé£åç©ä»¶ä¸è°ç¨ filter()
filter()
æ¹æ³æè®å this
ç length
屬æ§ï¼ç¶å¾å忝åéµçºå°æ¼ length
çéè² æ´æ¸ç屬æ§ã
const arrayLike = {
length: 3,
0: "a",
1: "b",
2: "c",
3: "a", // filter() å¿½ç¥æ¤é
ï¼å çº length çº 3
};
console.log(Array.prototype.filter.call(arrayLike, (x) => x <= "b"));
// [ 'a', 'b' ]
è¦ç¯ ç覽å¨ç¸å®¹æ§ åè¦
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