JavaScriptã®ã€ãã¬ãŒã¿ãã«ããŒããã¹ã¿ãŒããŠããšã¬ã¬ã³ãã§å¹ççãªã¹ããªãŒã æäœãã§ãŒã³ãå®çŸããŸãããããã£ã«ã¿ãŒããããããªãã¥ãŒã¹ãªã©ã䜿ã£ãŠãã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³åãã®ã³ãŒãã匷åããŸãã
JavaScriptã€ãã¬ãŒã¿ãã«ããŒåæïŒã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³åãã®ã¹ããªãŒã æäœãã§ãŒã³
çŸä»£ã®JavaScriptã¯ãããŒã¿ã®ã³ã¬ã¯ã·ã§ã³ãæ±ãããã®åŒ·åãªããŒã«ãæäŸããŸããã€ãã¬ãŒã¿ãã«ããŒã¯ãåæã®æŠå¿µãšçµã¿åãããããšã§ãããŒã¿ã¹ããªãŒã ã«å¯ŸããŠè€éãªæäœãå®è¡ããããã®ãšã¬ã¬ã³ãã§å¹ççãªæ¹æ³ãæäŸããŸãããã®ã¢ãããŒãã¯ãã¹ããªãŒã æäœãã§ãŒã³ãšåŒã°ããããšãå€ããç¹ã«ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã§å€§èŠæš¡ãªããŒã¿ã»ãããæ±ãå Žåã«ãã³ãŒãã®å¯èªæ§ãä¿å®æ§ãããã³ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
ã€ãã¬ãŒã¿ãšã€ãã©ãã«ã®çè§£
ã€ãã¬ãŒã¿ãã«ããŒãæãäžããåã«ãã€ãã¬ãŒã¿ãšã€ãã©ãã«ã®åºæ¬çãªæŠå¿µãçè§£ããããšãéèŠã§ãã
- ã€ãã©ãã«ïŒã€ãã¬ãŒã¿ãè¿ãã¡ãœããïŒ
Symbol.iteratorïŒãå®çŸ©ãããªããžã§ã¯ããäŸãšããŠã¯ãé åãæååãMapãSetãªã©ããããŸãã - ã€ãã¬ãŒã¿ïŒ
next()ã¡ãœãããå®çŸ©ãããªããžã§ã¯ãããã®ã¡ãœããã¯ãvalueïŒã·ãŒã±ã³ã¹å ã®æ¬¡ã®å€ïŒãšdoneïŒã€ãã¬ãŒã·ã§ã³ãå®äºãããã©ããã瀺ãããŒã«å€ïŒã®2ã€ã®ããããã£ãæã€ãªããžã§ã¯ããè¿ããŸãã
ãã®ã¡ã«ããºã ã«ãããJavaScriptã¯ã³ã¬ã¯ã·ã§ã³å ã®èŠçŽ ãæšæºåãããæ¹æ³ã§ãã©ããŒã¹ã§ããŸããããã¯ãã€ãã¬ãŒã¿ãã«ããŒã®åäœã«ãšã£ãŠäžå¯æ¬ ã§ãã
ã€ãã¬ãŒã¿ãã«ããŒã®ç޹ä»
ã€ãã¬ãŒã¿ãã«ããŒã¯ãã€ãã©ãã«ã«å¯ŸããŠåäœããæ°ããã€ãã©ãã«ãŸãã¯ã€ãã©ãã«ããæŽŸçããç¹å®ã®å€ãè¿ã颿°ã§ãããããã䜿çšãããšãäžè¬çãªããŒã¿æäœã¿ã¹ã¯ãç°¡æœãã€å®£èšçãªæ¹æ³ã§å®è¡ã§ããŸãã
以äžã¯ãæãäžè¬çã«äœ¿çšãããã€ãã¬ãŒã¿ãã«ããŒã®äžéšã§ãã
map()ïŒæäŸããã颿°ã«åºã¥ããŠã€ãã©ãã«ã®åèŠçŽ ã倿ãã倿ãããå€ãæã€æ°ããã€ãã©ãã«ãè¿ããŸããfilter()ïŒæäŸãããæ¡ä»¶ã«åºã¥ããŠã€ãã©ãã«ããèŠçŽ ãéžæããæ¡ä»¶ãæºããèŠçŽ ã®ã¿ãå«ãæ°ããã€ãã©ãã«ãè¿ããŸããreduce()ïŒé¢æ°ãé©çšããŠãã€ãã©ãã«ã®èŠçŽ ãåäžã®å€ã«çޝç©ããŸããforEach()ïŒã€ãã©ãã«ã®åèŠçŽ ã«å¯ŸããŠãæå®ããã颿°ã1åå®è¡ããŸããïŒæ³šïŒforEachã¯æ°ããã€ãã©ãã«ãè¿ããŸãããïŒsome()ïŒã€ãã©ãã«å ã®å°ãªããšã1ã€ã®èŠçŽ ãæäŸãããæ¡ä»¶ãæºãããã©ããã確èªããããŒã«å€ãè¿ããŸããevery()ïŒã€ãã©ãã«å ã®ãã¹ãŠã®èŠçŽ ãæäŸãããæ¡ä»¶ãæºãããã©ããã確èªããããŒã«å€ãè¿ããŸããfind()ïŒæäŸãããæ¡ä»¶ãæºããã€ãã©ãã«å ã®æåã®èŠçŽ ãè¿ããŸãããã®ãããªèŠçŽ ãèŠã€ãããªãå Žåã¯undefinedãè¿ããŸããfindIndex()ïŒæäŸãããæ¡ä»¶ãæºããã€ãã©ãã«å ã®æåã®èŠçŽ ã®ã€ã³ããã¯ã¹ãè¿ããŸãããã®ãããªèŠçŽ ãèŠã€ãããªãå Žåã¯-1ãè¿ããŸãã
åæãšã¹ããªãŒã æäœãã§ãŒã³
ã€ãã¬ãŒã¿ãã«ããŒã®çã®åã¯ãããããåæãã€ãŸãé£éã§ããããšã«ãããŸããããã«ãããåäžã®èªã¿ãããåŒã§è€éãªããŒã¿å€æãäœæã§ããŸããã¹ããªãŒã æäœãã§ãŒã³ãšã¯ãäžé£ã®ã€ãã¬ãŒã¿ãã«ããŒãã€ãã©ãã«ã«é©çšãããã®ã§ããããã«ããŒã®åºåãæ¬¡ã®ãã«ããŒã®å ¥åã«ãªããŸãã
ç¹å®ã®åœïŒäŸïŒæ¥æ¬ïŒåºèº«ã§25æ³ãè¶ ãããã¹ãŠã®ãŠãŒã¶ãŒã®ååãèŠã€ãããæ¬¡ã®äŸãèããŠã¿ãŸãããã
const users = [
{ name: "Alice", age: 30, country: "USA" },
{ name: "Bob", age: 22, country: "Canada" },
{ name: "Charlie", age: 28, country: "Japan" },
{ name: "David", age: 35, country: "Japan" },
{ name: "Eve", age: 24, country: "UK" },
];
const japaneseUsersOver25 = users
.filter(user => user.country === "Japan")
.filter(user => user.age > 25)
.map(user => user.name);
console.log(japaneseUsersOver25); // Output: ["Charlie", "David"]
ãã®äŸã§ã¯ãæåã«filter()ã䜿çšããŠæ¥æ¬åºèº«ã®ãŠãŒã¶ãŒãéžæããæ¬¡ã«å¥ã®filter()ã䜿çšããŠ25æ³ãè¶
ãããŠãŒã¶ãŒãéžæããæåŸã«map()ã䜿çšããŠãã£ã«ã¿ãªã³ã°ããããŠãŒã¶ãŒã®ååãæœåºããŸãããã®ãã§ãŒã³ã¢ãããŒãã«ãããã³ãŒããèªã¿ãããçè§£ãããããªããŸãã
ã¹ããªãŒã æäœãã§ãŒã³ã®å©ç¹
- å¯èªæ§ïŒã³ãŒãã¯ãã宣èšçã«ãªããçè§£ãããããªããŸããããã¯ãããŒã¿ã«å¯ŸããŠå®è¡ãããæäœã®ã·ãŒã±ã³ã¹ãæç¢ºã«è¡šçŸããããã§ãã
- ä¿å®æ§ïŒåã¹ããããåé¢ããé©åã«å®çŸ©ãããŠãããããããŒã¿åŠçããžãã¯ã®å€æŽãå®è£ ããã³ãã¹ããããããªããŸãã
- å¹çïŒå Žåã«ãã£ãŠã¯ãã¹ããªãŒã æäœãã§ãŒã³ã¯äžèŠãªäžéããŒã¿æ§é ãåé¿ããããšã§ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã JavaScriptãšã³ãžã³ã¯ããã§ãŒã³ãããæäœãæé©åããŠãåã¹ãããã§äžæçãªé åãäœæããªãããã«ããããšãã§ããŸããå ·äœçã«ã¯ããžã§ãã¬ãŒã¿ãŒé¢æ°ãšçµã¿åããã`Iterator`ãããã³ã«ã䜿çšãããšããé å»¶è©äŸ¡ããå¯èœã«ãªããå€ãå¿ èŠãªå Žåã«ã®ã¿èšç®ãããŸãã
- æ§æå¯èœæ§ïŒã€ãã¬ãŒã¿ãã«ããŒã¯ãåå©çšããã³çµã¿åãããŠãããè€éãªããŒã¿å€æãäœæã§ããŸãã
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«é¢ããèæ ®äºé
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ãéçºããå ŽåãããŒã«ãªãŒãŒã·ã§ã³ãåœéåãæåã®éããªã©ã®èŠçŽ ãèæ ®ããããšãéèŠã§ããã€ãã¬ãŒã¿ãã«ããŒã¯ããããã®èª²é¡ã«å¯ŸåŠããäžã§ç¹ã«åœ¹ç«ã¡ãŸãã
ããŒã«ãªãŒãŒã·ã§ã³
ããŒã«ãªãŒãŒã·ã§ã³ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãç¹å®ã®èšèªãå°åã«é©åãããããšãå«ãŸããŸããã€ãã¬ãŒã¿ãã«ããŒã䜿çšãããšãããŒã¿ãç¹å®ã®ãã±ãŒã«ã«é©ãã圢åŒã«å€æã§ããŸããããšãã°ãmap()ã䜿çšããŠããŠãŒã¶ãŒã®ãã±ãŒã«ã«åŸã£ãŠæ¥ä»ãé貚ãããã³æ°å€ããã©ãŒãããã§ããŸãã
const prices = [10.99, 25.50, 5.75];
const locale = 'de-DE'; // ãã€ãèªãã±ãŒã«
const formattedPrices = prices.map(price => {
return price.toLocaleString(locale, { style: 'currency', currency: 'EUR' });
});
console.log(formattedPrices); // Output: [ '10,99\xa0â¬', '25,50\xa0â¬', '5,75\xa0â¬' ]
åœéå
åœéåã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãæåããè€æ°ã®èšèªãšå°åããµããŒãããããã«èšèšããããšãå«ãŸããŸããã€ãã¬ãŒã¿ãã«ããŒã䜿çšãããšãæåçãªå¥œã¿ã«åºã¥ããŠããŒã¿ããã£ã«ã¿ãªã³ã°ããã³ãœãŒãã§ããŸããããšãã°ãsort()ãã«ã¹ã¿ã ã³ã³ãã¬ãŒã¿ãŒé¢æ°ã§äœ¿çšããŠãç¹å®ã®èšèªã®ã«ãŒã«ã«åŸã£ãŠæååããœãŒãã§ããŸãã
const names = ['BjÞrn', 'Alice', 'Ã
sa', 'Zoe'];
const locale = 'sv-SE'; // ã¹ãŠã§ãŒãã³èªãã±ãŒã«
const sortedNames = [...names].sort((a, b) => a.localeCompare(b, locale));
console.log(sortedNames); // Output: [ 'Alice', 'Ã
sa', 'BjÞrn', 'Zoe' ]
æåã®éã
æåã®éãã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãæäœããæ¹æ³ã«åœ±é¿ãäžããå¯èœæ§ããããŸããã€ãã¬ãŒã¿ãã«ããŒã䜿çšãããšããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãšããŒã¿ã®è¡šç€ºãããŸããŸãªæåçèŠç¯ã«é©åãããããšãã§ããŸããããšãã°ãmap()ã䜿çšããŠãæ¥ä»ãç°ãªã圢åŒã§è¡šç€ºããããç°ãªã枬å®åäœã䜿çšããããããªã©ãæåçãªå¥œã¿ã«åºã¥ããŠããŒã¿ã倿ã§ããŸãã
å®è·µçãªäŸ
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã§ã€ãã¬ãŒã¿ãã«ããŒãã©ã®ããã«äœ¿çšã§ãããã®è¿œå ã®å®çšçãªäŸã次ã«ç€ºããŸãã
å°åã«ããããŒã¿ã®ãã£ã«ã¿ãªã³ã°
ããŸããŸãªåœããã®é¡§å®¢ã®ããŒã¿ã»ããããããç¹å®ã®å°åïŒäŸïŒãšãŒãããïŒããã®é¡§å®¢ã®ã¿ã衚瀺ããããšããŸãã
const customers = [
{ name: "Alice", country: "USA", region: "North America" },
{ name: "Bob", country: "Germany", region: "Europe" },
{ name: "Charlie", country: "Japan", region: "Asia" },
{ name: "David", country: "France", region: "Europe" },
];
const europeanCustomers = customers.filter(customer => customer.region === "Europe");
console.log(europeanCustomers);
// Output: [
// { name: "Bob", country: "Germany", region: "Europe" },
// { name: "David", country: "France", region: "Europe" }
// ]
åœå¥ã®å¹³å泚æé¡ã®èšç®
泚æã®ããŒã¿ã»ããããããåœããšã®å¹³å泚æé¡ãèšç®ããããšããŸãã
const orders = [
{ orderId: 1, customerId: "A", country: "USA", amount: 100 },
{ orderId: 2, customerId: "B", country: "Canada", amount: 200 },
{ orderId: 3, customerId: "A", country: "USA", amount: 150 },
{ orderId: 4, customerId: "C", country: "Canada", amount: 120 },
{ orderId: 5, customerId: "D", country: "Japan", amount: 80 },
];
function calculateAverageOrderValue(orders) {
const countryAmounts = orders.reduce((acc, order) => {
if (!acc[order.country]) {
acc[order.country] = { sum: 0, count: 0 };
}
acc[order.country].sum += order.amount;
acc[order.country].count++;
return acc;
}, {});
const averageOrderValues = Object.entries(countryAmounts).map(([country, data]) => ({
country,
average: data.sum / data.count,
}));
return averageOrderValues;
}
const averageOrderValues = calculateAverageOrderValue(orders);
console.log(averageOrderValues);
// Output: [
// { country: "USA", average: 125 },
// { country: "Canada", average: 160 },
// { country: "Japan", average: 80 }
// ]
ãã±ãŒã«ã«å¿ããæ¥ä»ã®æžåŒèšå®
ã€ãã³ãã®ããŒã¿ã»ããããããã€ãã³ãã®æ¥ä»ããŠãŒã¶ãŒã®ãã±ãŒã«ã«é©ãã圢åŒã§è¡šç€ºããããšããŸãã
const events = [
{ name: "Conference", date: new Date("2024-03-15") },
{ name: "Workshop", date: new Date("2024-04-20") },
];
const locale = 'fr-FR'; // ãã©ã³ã¹èªãã±ãŒã«
const formattedEvents = events.map(event => ({
name: event.name,
date: event.date.toLocaleDateString(locale),
}));
console.log(formattedEvents);
// Output: [
// { name: "Conference", date: "15/03/2024" },
// { name: "Workshop", date: "20/04/2024" }
// ]
é«åºŠãªãã¯ããã¯ïŒãžã§ãã¬ãŒã¿ãŒãšé å»¶è©äŸ¡
éåžžã«å€§ããªããŒã¿ã»ããã®å Žåããã§ãŒã³ã®åã¹ãããã§äžéé åãäœæãããšå¹çãäœäžããå¯èœæ§ããããŸãã JavaScriptã¯ãžã§ãã¬ãŒã¿ãŒãš`Iterator`ãããã³ã«ãæäŸããŠãããããããå©çšããŠé å»¶è©äŸ¡ãå®è£ ã§ããŸããããã¯ãããŒã¿ãå®éã«å¿ èŠãªå Žåã«ã®ã¿åŠçãããããšãæå³ããã¡ã¢ãªæ¶è²»éãåæžããããã©ãŒãã³ã¹ãåäžãããŸãã
function* filter(iterable, predicate) {
for (const item of iterable) {
if (predicate(item)) {
yield item;
}
}
}
function* map(iterable, transform) {
for (const item of iterable) {
yield transform(item);
}
}
const largeArray = Array.from({ length: 1000000 }, (_, i) => i);
const evenNumbers = filter(largeArray, x => x % 2 === 0);
const squaredEvenNumbers = map(evenNumbers, x => x * x);
// æåã®10åã®å¶æ°ã®2ä¹ã®ã¿ãèšç®ãã
const firstTen = [];
for (let i = 0; i < 10; i++) {
firstTen.push(squaredEvenNumbers.next().value);
}
console.log(firstTen);
ãã®äŸã§ã¯ãfilter颿°ãšmap颿°ã¯ãžã§ãã¬ãŒã¿ãŒãšããŠå®è£
ãããŠããŸãããããã¯é
åå
šäœãäžåºŠã«åŠçããŸããã代ããã«ããªã³ããã³ãã§å€ãçæããŸããããã¯ãããŒã¿ã»ããå
šäœãäºåã«åŠçãããšã³ã¹ããããããããå€§èŠæš¡ãªããŒã¿ã»ããã«ç¹ã«åœ¹ç«ã¡ãŸãã
ããããèœãšã穎ãšãã¹ããã©ã¯ãã£ã¹
- éå°ãªãã§ãŒã³ïŒãã§ãŒã³ã¯åŒ·åã§ãããé床ã®ãã§ãŒã³ã¯ã³ãŒããèªã¿ã«ããããããšããããŸããå¿ èŠã«å¿ããŠãè€éãªæäœãããå°ããã管çããããã¹ãããã«åå²ããŸãã
- å¯äœçšïŒã³ãŒãã®æšè«ãšãããã°ãé£ããããå¯èœæ§ããããããã€ãã¬ãŒã¿ãã«ããŒé¢æ°å ã§å¯äœçšãé¿ããŠãã ãããã€ãã¬ãŒã¿ãã«ããŒã¯ãçæ³çã«ã¯å ¥ååŒæ°ã«ã®ã¿äŸåããçŽç²ãªé¢æ°ã§ããå¿ èŠããããŸãã
- ããã©ãŒãã³ã¹ïŒå€§èŠæš¡ãªããŒã¿ã»ãããæ±ãå Žåã¯ãããã©ãŒãã³ã¹ãžã®åœ±é¿ã«æ³šæããŠãã ããããžã§ãã¬ãŒã¿ãŒãšé å»¶è©äŸ¡ã䜿çšããŠãäžèŠãªã¡ã¢ãªæ¶è²»ãåé¿ããããšãæ€èšããŠãã ããã
- äžå€æ§ïŒ
mapãfilterã®ãããªã€ãã¬ãŒã¿ãã«ããŒã¯ãå ã®ããŒã¿ãä¿æããŠæ°ããã€ãã©ãã«ãè¿ããŸãããã®äžå€æ§ãåãå ¥ããŠãäºæããªãå¯äœçšãåé¿ããã³ãŒããããäºæž¬å¯èœã«ããŸãã - ãšã©ãŒåŠçïŒäºæããªãããŒã¿ãŸãã¯æ¡ä»¶ãé©åã«åŠçããããã«ãã€ãã¬ãŒã¿ãã«ããŒé¢æ°å ã§é©åãªãšã©ãŒåŠçãå®è£ ããŸãã
çµè«
JavaScriptã€ãã¬ãŒã¿ãã«ããŒã¯ãè€éãªããŒã¿å€æãç°¡æœã§èªã¿ãããæ¹æ³ã§å®è¡ããããã®åŒ·åã§æè»ãªæ¹æ³ãæäŸããŸããåæãšã¹ããªãŒã æäœãã§ãŒã³ã®ååãçè§£ããããšã§ãããå¹ççã§ä¿å®ãããããã°ããŒãã«ã«å¯Ÿå¿ããã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ãéçºããå Žåã¯ãããŒã«ãªãŒãŒã·ã§ã³ãåœéåãæåã®éããªã©ã®èŠçŽ ãèæ ®ããã€ãã¬ãŒã¿ãã«ããŒã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãç¹å®ã®èšèªãå°åãããã³æåçèŠç¯ã«é©åãããŸããã€ãã¬ãŒã¿ãã«ããŒã®åãæŽ»çšããŠãJavaScriptãããžã§ã¯ãã§ã®ããŒã¿æäœã®æ°ããªå¯èœæ§ãè§£ãæŸã¡ãŸãããã
ããã«ããžã§ãã¬ãŒã¿ãŒãšé å»¶è©äŸ¡ã®ææ³ãç¿åŸããããšã§ãç¹ã«éåžžã«å€§ããªããŒã¿ã»ãããæ±ãå Žåã«ãã³ãŒãã®ããã©ãŒãã³ã¹ãæé©åã§ããŸãããã¹ããã©ã¯ãã£ã¹ã«åŸããããããèœãšã穎ãåé¿ããããšã§ãã³ãŒããå ç¢ã§ä¿¡é Œæ§ãé«ããã¹ã±ãŒã©ãã«ã§ããããšã確èªã§ããŸãã