Baseline Widely available
filter()
㯠Array
ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ãæå®ãããé
åã®ä¸ããæå®ããã颿°ã§å®è£
ããã¦ãããã¹ãã«åæ ¼ããè¦ç´ ã ããæ½åºããã·ã£ãã¼ã³ãã¼ã使ãã¾ãã
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);
// 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
ã®æ°å¤ã 0 以å¤ã®è¦ç´ ã ãã«çµã£ã 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']
callbackFn ã®ç¬¬ 3 弿°ã®ä½¿ç¨
array
弿°ã¯ãé
åã®å¥ã®è¦ç´ ã«ã¢ã¯ã»ã¹ãããå ´åãç¹ã«ããã®é
åãåç
§ããæ¢åã®å¤æ°ããªãå ´åã«ä¾¿å©ã§ããæ¬¡ã®ä¾ã§ã¯ãã¾ã map()
ã使ç¨ãã¦ããããã®ååããæ°å¤ ID ãæ½åºããæ¬¡ã« filter()
ã使ç¨ãã¦ããã®æ°å¤ãé£ã®æ°å¤ããã大ãããã®ã鏿ãã¦ãã¾ãã
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", // length ã 3 ã§ãããã filter() ã¯ç¡è¦ãã
};
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