é åã¯å¤ãã®ã¡ã½ãããæä¾ãã¾ããåãããããããããã«ããã®ãã£ãã¿ã¼ã§ã¯ã°ã«ã¼ãã«åãã¦èª¬æãã¾ãã
ã¢ã¤ãã ã®è¿½å /åé¤
ç§ãã¡ã¯æ¢ã«å é ã¾ãã¯æ«å°¾ã«ã¢ã¤ãã ã追å /åé¤ããã¡ã½ãããç¥ã£ã¦ãã¾ã:
push(...items)ã¯itemsãæ«å°¾ã«è¿½å ãã¾ããpop()ã¯æ«å°¾ã®è¦ç´ ãåé¤ãããããè¿ãã¾ããshift()ã¯å é ã®è¦ç´ ãåé¤ãããããè¿ãã¾ããunshift(...items)ã¯ã¢ã¤ãã ãå é ã«è¿½å ãã¾ãã
ä»ã«ãããã¤ãããã¾ãã
splice
é åããè¦ç´ ãåé¤ããæ¹æ³ã¯ã©ã®ããã«ãªãã§ãããï¼
é
åã¯ãªãã¸ã§ã¯ããªã®ã§ã delete ã試ããã¨ãã§ãã¾ã:
let arr = ["I", "go", "home"];
delete arr[1]; // "go" ãåé¤
alert( arr[1] ); // undefined
// now arr = ["I", , "home"];
alert( arr.length ); // 3
è¦ç´ ã¯åé¤ããã¾ããããé
åã¯ä¾ç¶ã¨ãã¦3ã¤ã®è¦ç´ ãæã£ã¦ãããarr.length == 3 ã¨ãªãã¾ãã
ããã¯èªç¶ãªãã¨ã§ãããªããªãã delete obj.key 㯠key ã§å¤ãåé¤ããããã®ãã®ã§ããããããã¹ã¦ã§ããããªãã¸ã§ã¯ãã§ã¯åé¡ããã¾ãããããããé常é
åã§ã¯æ®ãã®è¦ç´ ãç§»åããè§£æ¾ãããå ´æãåãããã§ããä»ããçãé
åã«ãªããã¨ãæå¾
ãã¦ãã¾ãã
ãªã®ã§ãç¹å¥ãªã¡ã½ããã使ç¨ããå¿ è¦ãããã¾ãã
arr.splice(str) ã¡ã½ããã¯ãé åç¨ã®ã¹ã¤ã¹è£½ã¢ã¼ãã¼ãã¤ãã§ããããã¯ä½ã§ããããã¨ãã§ãã¾ã: 追å ãåé¤ãã¾ãè¦ç´ ã®æ¿å ¥ãã
æ§æ:
arr.splice(index[, deleteCount, elem1, ..., elemN])
ä½ç½® index ããå§ã¾ãã¾ãã deleteCount ã®è¦ç´ ãåé¤ããå¾ããã®å ´æã« elem1, ..., elemN ãæ¿å
¥ãã¾ãããã®ã¡ã½ããã¯åé¤ããè¦ç´ ã®é
åãè¿ãã¾ãã
ãã®ã¡ã½ããã¯ä¾ã§ç°¡åã«ææ¡ã§ãã¾ãã
åé¤ãã¦ã¿ã¾ããã:
let arr = ["I", "study", "JavaScript"];
arr.splice(1, 1); // ã¤ã³ããã¯ã¹ 1 ãã 1 è¦ç´ ãåé¤
alert( arr ); // ["I", "JavaScript"]
ç°¡åã§ãããã¤ã³ããã¯ã¹ 1 ããå§ã¾ãã1 ã¤è¦ç´ ãåé¤ãã¾ãã
次ã®ä¾ã§ã¯ã3ã¤ã®è¦ç´ ãåé¤ããä»ã®2ã¤ã®è¦ç´ ã§ããããç½®ãæãã¾ã:
let arr = ["I", "study", "JavaScript", "right", "now"];
// æåã® 3 è¦ç´ ãåé¤ããå¥ã®ãã®ã«ç½®æ
arr.splice(0, 3, "Let's", "dance");
alert( arr ) // ä»ã¯ ["Let's", "dance", "right", "now"]
ããã§ãsplice ãåé¤ãããè¦ç´ ã®é
åãè¿ãã¦ãããã¨ãè¦ããã¨ãã§ãã¾ã:
let arr = ["I", "study", "JavaScript", "right", "now"];
// æåã® 2 è¦ç´ ãåé¤
let removed = arr.splice(0, 2);
alert( removed ); // "I", "study" <-- åé¤ãããè¦ç´ ã®é
å
splice ã¡ã½ããã¯åé¤ããã«æ¿å
¥ãããã¨ãå¯è½ã§ãããã®ããã«ã¯ãdeleteCount ã« 0 ãã»ãããã¾ã:
let arr = ["I", "study", "JavaScript"];
// ã¤ã³ããã¯ã¹ 2 ãã
// åé¤ 0
// ãã®å¾ "complex" 㨠"language" ãæ¿å
¥
arr.splice(2, 0, "complex", "language");
alert( arr ); // "I", "study", "complex", "language", "JavaScript"
ä¸è¨ãä»ã®é åã®ã¡ã½ããã§ã¯ãè² ã®ã¤ã³ããã¯ã¹ã許容ããã¾ãããããã¯é åã®æ«å°¾ããã®ä½ç½®ãæå®ãã¾ãã:
let arr = [1, 2, 5];
// ã¤ã³ããã¯ã¹ -1 (æ«å°¾ãã1ã¤å) ãã
// åé¤ 0 è¦ç´ ,
// ãã®å¾ 3 㨠4 ãæ¿å
¥
arr.splice(-1, 0, 3, 4);
alert( arr ); // 1,2,3,4,5
slice
ã¡ã½ãã arr.slice ã¯ä¼¼ãããã«è¦ãã arr.splice ãããã¯ããã«åç´ã§ãã
æ§æ:
arr.slice(start, end)
éå§ã¤ã³ããã¯ã¹ "start" ãã "end" ("end" ã¯å«ã¿ã¾ãã)ã®ãã¹ã¦ã®ã¢ã¤ãã ãã³ãã¼ããæ°ããé
åãè¿ãã¾ããstart 㨠end ã¯ã¨ãã«è² å¤ã«ãªããã¨ãã§ãã¾ãããã®ã¨ãã¯ãé
åã®æ«å°¾ããã®ä½ç½®ãæ³å®ããã¾ãã
str.slice ã®ããã«åä½ãã¾ãããé¨åæååã®ä»£ããã«é¨åé
åãä½ãã¾ãã
ä¾:
let arr = ["t", "e", "s", "t"];
alert( arr.slice(1, 3) ); // e,s (1 ãã 3 ãã³ãã¼)
alert( arr.slice(-2) ); // s,t (-2 ããæ«å°¾ã¾ã§)
弿°ãªã arr.slice() ã§ãå¼ã³åºããã¨ãã§ãããã㯠arr ã®ã³ãã¼ãçæãã¾ããããã¯ããªãªã¸ãã«ã®é
åã«å½±é¿ãä¸ããªãå½¢ã§ããã«å¤æããããã®ããã®ã³ãã¼ãåå¾ããã®ã«ãã使ç¨ããã¾ãã
concat
ã¡ã½ãã arr.concat ã¯é åãä»ã®é åã¾ãã¯ã¢ã¤ãã ã¨çµåãã¾ãã
æ§æ:
arr.concat(arg1, arg2...)
ä»»æã®æ°ã®å¼æ°(é åã¾ãã¯å¤)ã許容ãã¾ãã
çµæã¯ arr, 次㫠arg1, arg2 ãªã©ã®ã¢ã¤ãã ãå«ãæ°ããé
åãè¿ãã¾ãã
ããã弿°ãé
åãããã㯠Symbol.isConcatSpreadable ããããã£ãæã£ã¦ããå ´åããã®å
¨ã¦ã®è¦ç´ ãã³ãã¼ããã¾ããããã§ãªãå ´åã弿°èªä½ãã³ãã¼ããã¾ãã
ä¾:
let arr = [1, 2];
// arr 㨠[3,4] ããã¼ã¸
alert( arr.concat([3, 4])); // 1,2,3,4
// arr 㨠[3,4] 㨠[5,6] ããã¼ã¸
alert( arr.concat([3, 4], [5, 6])); // 1,2,3,4,5,6
// arr 㨠[3,4] ããã¼ã¸å¾, 5 㨠6 ã追å
alert( arr.concat([3, 4], 5, 6)); // 1,2,3,4,5,6
é常ã¯ãé åããè¦ç´ ãã³ãã¼ããã ãã§ãããã以å¤ã®ãªãã¸ã§ã¯ãã§ã¯ãé åã®ããã«è¦ããã¨ãã¦ããå ¨ä½ã¨ãã¦è¿½å ããã¾ã:
let arr = [1, 2];
let arrayLike = {
0: "something",
length: 1
};
alert( arr.concat(arrayLike) ); // 1,2,[object Object]
â¦ããããããé
åã®ãããªãªãã¸ã§ã¯ãã Symbol.isConcatSpreadable ããããã£ãæã¤å ´åãconcat ã¯é
åã¨ãã¦æ±ãã¾ããã¤ã¾ãã代ããã«ãã®è¦ç´ ã追å ããã¾ã:
let arr = [1, 2];
let arrayLike = {
0: "something",
1: "else",
[Symbol.isConcatSpreadable]: true,
length: 2
};
alert( arr.concat(arrayLike) ); // 1,2,something,else
ã¤ãã¬ã¼ã/å復: forEach
arr.forEach ã¡ã½ããã¯é åã®å ¨è¦ç´ ã«å¯¾ãã¦é¢æ°ãå®è¡ãããã¨ãã§ãã¾ãã
æ§æ:
arr.forEach(function(item, index, array) {
// ... item ã«å¯¾ãã¦ä½ãå¦çããã
});
ä¾ãã°ãããã¯é åã®åè¦ç´ ã表示ãã¾ã:
// åè¦ç´ 㯠alert ãå¼ã³åºã
["Bilbo", "Gandalf", "Nazgul"].forEach(alert);
ããã¦ãã®ã³ã¼ãã¯ãã¿ã¼ã²ããã¨ãªãé åå ã®ä½ç½®ã«ã¤ãã¦ããç´°ããã§ãã
["Bilbo", "Gandalf", "Nazgul"].forEach((item, index, array) => {
alert(`${item} is at index ${index} in ${array}`);
});
颿°ã®çµæ(ããä½ããè¿ãå ´å)ã¯æ¨ã¦ãããç¡è¦ããã¾ãã
é åã§ã®æ¤ç´¢
ãããã¯ãé åã§ä½ããæ¢ãããã®ã¡ã½ããã§ãã
indexOf/lastIndexOf and includes
ã¡ã½ãã arr.indexOf, arr.lastIndexOf 㨠arr.includes ã¯æååã®å ´åã¨åãæ§æãæã¡ãåºæ¬çã«åããã¨ãè¡ãã¾ãããæåã®ä»£ããã«ã¢ã¤ãã ãæä½ãã¾ã:
arr.indexOf(item, from)ã¯ã¤ã³ããã¯ã¹fromããitemãæ¢ããè¦ã¤ãã£ãå ´æã®ã¤ã³ããã¯ã¹ãè¿ãã¾ããããã§ãªãå ´åã¯-1ã«ãªãã¾ããarr.lastIndexOf(item, from)ã¯åãã§ãããå³ããå·¦ã«è¦ã¦ããã¾ããarr.includes(item, from)ã¯ã¤ã³ããã¯ã¹fromããitemãæ¢ããè¦ã¤ãã£ãå ´åãtrueãè¿ãã¾ãã
ä¾:
let arr = [1, 0, false];
alert( arr.indexOf(0) ); // 1
alert( arr.indexOf(false) ); // 2
alert( arr.indexOf(null) ); // -1
alert( arr.includes(1) ); // true
ã¡ã½ãã㯠=== æ¯è¼ã使ããã¨ã«çæãã¦ãã ããããã®ãããããã false ãæ¢ãå ´åãã¼ãã§ã¯ãªããæ£ç¢ºãª false ãè¦ã¤ãããã¨ãã¾ãã
ãããå«ãã§ãããããã§ãã¯ãããããæ£ç¢ºãªã¤ã³ããã¯ã¹ã¯ä¸è¦ãªã¨ãã¯ãarr.includes ã好ã¾ããã§ãã
ã¾ããincludes ã®é常ã«å°ããªéãã¯ãindexOf/lastIndexOf ã¨éããNaN ãæ£ããå¦çãããã¨ãã§ãã¾ã:
const arr = [NaN];
alert( arr.indexOf(NaN) ); // -1 (0 ã«ãªãã¹ãã§ãã, === çå¤ã¯ NaN ã§ã¯æ©è½ãã¾ãã)
alert( arr.includes(NaN) );// true (æ£ãã)
find 㨠findIndex
ãªãã¸ã§ã¯ãã®é åãæã£ã¦ãããã¨ãæ³åãã¦ãã ãããç¹å®æ¡ä»¶ãæã¤ãªãã¸ã§ã¯ããã©ã®ããã«ãã¦è¦ã¤ãã¾ããï¼
ããã§ arr.find ã¡ã½ããã便å©ã§ãã
æ§æã¯ããã§ã:
let result = arr.find(function(item, index, array) {
// true ãè¿å´ãããã¨ãitem ãè¿å´ãããã¤ãã¬ã¼ã·ã§ã³ã¯åæ¢ãã¾ã
// å½ã®å ´å㯠undefined ã§ã
});
颿°ã¯é åã®è¦ç´ æ¯ã«ç¹°ãè¿ãå¼ã°ãã¾ã:
itemã¯è¦ç´ ã§ããindexã¯ã¤ã³ããã¯ã¹ã§ããarrayã¯é åèªèº«ã§ãã
ãã true ãè¿ãã¨ãæ¤ç´¢ãæ¢ã¾ããitem ãè¿å´ããã¾ããè¦ã¤ãããªãå ´å㯠undefined ã«ãªãã¾ãã
ä¾ãã°ãã¦ã¼ã¶ã®é
åãæã£ã¦ããããããããã£ã¼ã«ã id 㨠name ãæã£ã¦ããã¨ãã¾ããid == 1 ã®ãã®ãè¦ã¤ãã¾ããã:
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"}
];
let user = users.find(item => item.id == 1);
alert(user.name); // John
ç¾å®ã®ä¸çã§ã¯ããªãã¸ã§ã¯ãã®é
åã¯ä¸è¬çãªãã¨ã§ãããªã®ã§ã find ã¡ã½ããã¯é常ã«å½¹ç«ã¡ã¾ãã
ä¾ã®ä¸ã§ã¯ï¼ã¤ã®å¼æ°ã颿° item => item.id == 1 ã§ find ãè¡ã£ã¦ããç¹ã«æ³¨æãã¦ãã ãããfind ã®ä»ã®ãã©ã¡ã¼ã¿ã¯æ®ã©ä½¿ããã¾ããã
arr.findIndex ã¡ã½ããã¯åºæ¬çã«åãã§ããããè¦ç´ èªä½ã§ã¯ãªãè¦ç´ ãè¦ã¤ãã£ãã¤ã³ããã¯ã¹ãè¿ãã¾ãã
filter
find ã¡ã½ããã¯ã颿°ã true ãè¿ãããã«ããåä¸ã®ï¼æåã®ï¼è¦ç´ ãæ¢ãã¾ãã
ããè¤æ°ã«ãªãå¯è½æ§ãããå ´åãarr.filter(fn) ã使ãã¾ãã
æ§æã¯å¤§ä½ find ã¨åãã§ãããfilter ã¯ããããããã¹ã¦è¦ç´ ã®é
åãè¿ãã¾ã:
let results = arr.filter(function(item, index, array) {
// true ã®å ´åãitem 㯠results ã«ããã·ã¥ãããã¤ãã¬ã¼ã·ã§ã³ã¯ç¶ç¶ãã¾ã
// ä½ãè¦ã¤ãããªãå ´åã¯ã空é
åãè¿ãã¾ã
});
ä¾:
let users = [
{id: 1, name: "John"},
{id: 2, name: "Pete"},
{id: 3, name: "Mary"}
];
// æåã®2人ã®ã¦ã¼ã¶ã®é
åãè¿ãã¾ã
let someUsers = users.filter(item => item.id < 3);
alert(someUsers.length); // 2
é åã夿ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãé åã夿ã¾ãã¯ä¸¦ã³æ¿ããæ¹æ³ã«ã¤ãã¦èª¬æãã¾ãã
map
arr.map ã¡ã½ããã¯æã便å©ãªãã®ã®1ã¤ã§ããã使ããã¾ãã
ããã¯ãé åã®åè¦ç´ ã«å¯¾ãã¦é¢æ°ãå¼ã³åºããçµæã®é åãè¿ãã¾ãã
æ§æã¯æ¬¡ã®éãã§ã:
let result = arr.map(function(item, index, array) {
// item ã®ä»£ããã«æ°ããå¤ãè¿ãã¾ã
})
ä¾ãã°ãããã§ã¯åè¦ç´ ããã®é·ãã«å¤æãã¾ã:
let lengths = ["Bilbo", "Gandalf", "Nazgul"].map(item => item.length)
alert(lengths); // 5,7,6
sort(fn)
ã¡ã½ãã arr.sort ã¯é åã æ±ºã¾ã£ãä½ç½®ã« ã½ã¼ãããè¦ç´ ã®é çªã夿´ãã¾ãã
ãããã½ã¼ããããé
åãè¿ãã¾ãããarr èªèº«ã夿´ãããã®ã§ãè¿å´å¤ã¯é常ç¡è¦ããã¾ãã
ä¾:
let arr = [ 1, 2, 15 ];
// ãã®ã¡ã½ãã㯠arr ã®å
容ãä¸¦ã¹æ¿ãï¼ã¦ãããè¿ãã¾ãï¼
arr.sort();
alert( arr ); // 1, 15, 2
åºåçµæãä½ãä¸èªç¶ã§ãããã¨ã«æ°ã¥ãã¾ãããï¼
並ã³é ã 1, 15, 2 ã¨ãªãã¾ãããæ£ãããªãããã§ããããããªãã§ãããï¼
ã¢ã¤ãã ã¯ãããã©ã«ãã§ã¯æååã¨ãã¦ã½ã¼ãããã¾ãã
æåéãããã¹ã¦ã®è¦ç´ ã¯æååã«å¤æãããæ¯è¼ããã¾ãããªã®ã§ãè¾æ¸ç·¨éé åºãé©ç¨ãããå®éã«ã¯ "2" > "15" ã¨ãªãã¾ãã
ç§ãã¡ç¬èªã®ã½ã¼ãé ã使ãããã«ã¯ãarr.sort() ã®å¼æ°ã¨ãã¦ã2ã¤ã®å¼æ°ããã¤é¢æ°ãæå®ããå¿
è¦ãããã¾ãã
颿°ã¯ãã®ããã«åä½ããå¿ è¦ãããã¾ã:
function compare(a, b) {
if (a > b) return 1;
if (a == b) return 0;
if (a < b) return -1;
}
ä¾:
function compareNumeric(a, b) {
if (a > b) return 1;
if (a == b) return 0;
if (a < b) return -1;
}
let arr = [ 1, 2, 15 ];
arr.sort(compareNumeric);
alert(arr); // 1, 2, 15
ããã§æå³ããã¨ããã«åä½ãã¾ãã
ç«ã¡æ¢ã¾ã£ã¦ä½ãèµ·ãã¦ããã®ãèãã¦ã¿ã¾ããããarr ã¯ä½ã§ãé
åã«ãããã¨ãã§ãã¾ããããã¯æ°å¤ãæååãhtmlè¦ç´ ããã®ä»ä½ã§ãå«ã¾ããå¯è½æ§ãããã¾ããç§ãã¡ã¯ ä½ãã® ã»ãããæã£ã¦ãã¾ããããããã½ã¼ãããããã«ã¯ãè¦ç´ ãæ¯è¼ããæ¹æ³ãç¥ã£ã¦ãã é åºä»ã颿° ãå¿
è¦ã§ãã ããã©ã«ãã¯æååã§ãã
arr.sort(fn) ã¡ã½ããã¯çµã¿è¾¼ã¿ã§ã½ã¼ãã¢ã«ã´ãªãºã ã®å®è£
ãæã£ã¦ãã¾ããç§ãã¡ã¯ãããæ£ç¢ºã«ã©ã®ããã«åä½ãããã«ã¤ãã¦ã¯æ°ã«ããå¿
è¦ã¯ããã¾ãã (æ®ã©ã®å ´åãæé©åãããã¯ã¤ãã¯ã½ã¼ã ã§ã)ãé
åã®è¦ç´ ãè¦ã¦ãããæä¾ããã颿°ã使ã£ã¦ãã®è¦ç´ ãæ¯è¼ããä¸¦ã¹æ¿ãã¾ããç§ãã¡ã«å¿
è¦ãªã®ã¯ãæ¯è¼ãè¡ã fn ãæä¾ãããã¨ã ãã§ãã
ã¨ããã§ãããã©ã®è¦ç´ ãæ¯è¼ããã¦ããããç¥ãããã¨ããalert ããã¦ãåé¡ããã¾ãã:
[1, -2, 15, 2, 0, 8].sort(function(a, b) {
alert( a + " <> " + b );
return a - b;
});
ã¢ã«ã´ãªãºã ã¯å¦çã®ä¸ã§è¤æ°åè¦ç´ ãæ¯è¼ãã¾ãããã§ããã ãåæ°ãå°ãªããããã¨ãã¾ãã
å®éã«ã¯ãæ¯è¼é¢æ°ã¯æ£ã®æ°ãããã大ããããè² ã®æ°ããããå°ãããã¨ãã¦è¿ãã°ååã§ãã
ããçã颿°ã§æ¸ããã¨ãã§ãã¾ã:
let arr = [ 1, 2, 15 ];
arr.sort(function(a, b) { return a - b; });
alert(arr); // 1, 2, 15
ã¢ãã¼é¢æ° ãè¦ãã¦ãã¾ãã? ãã£ããããã½ã¼ããæ¸ãããã«ä½¿ãã¾ãã:
arr.sort( (a, b) => a - b );
ããã¯ãä»ã®ä¸ã§æ¸ãã¦ããããé·ããã¼ã¸ã§ã³ã¨ã¾ã£ããåãããã«åä½ãã¾ãã
localeCompare ã使ç¨ãã¾ãstringsã®æ¯è¼ã¢ã«ã´ãªãºã ãæãåºãã¦ãã ãããããã©ã«ãã§ã¯ã³ã¼ãã§æåæ¯è¼ãè¡ãã¾ãã
å¤ãã®ã¢ã«ãã¡ãããã§ã¯ãà ãªã©ã®æåã®ã½ã¼ããæ£ããè¡ãããã®ã¡ã½ãã str.localeCompare ã使ç¨ããã®ãããã§ãã
ä¾ãã°ããã¤ãèªã§ããã¤ãã®å½ãã½ã¼ããã¦ã¿ã¾ããã:
let countries = ['Ãsterreich', 'Andorra', 'Vietnam'];
alert( countries.sort( (a, b) => a > b ? 1 : -1) ); // Andorra, Vietnam, Ãsterreich (ééã)
alert( countries.sort( (a, b) => a.localeCompare(b) ) ); // Andorra,Ãsterreich,Vietnam (æ£ãã!)
reverse
ã¡ã½ãã arr.reverse 㯠arr å
ã®è¦ç´ ã®é åºãé転ããã¾ãã
ä¾:
let arr = [1, 2, 3, 4, 5];
arr.reverse();
alert( arr ); // 5,4,3,2,1
ã¾ããå転å¾ã«é
å arr ãè¿ãã¾ãã
split 㨠join
ããã§ã¯ç¾å®ä¸çã§ã®ã·ãã¥ã¨ã¼ã·ã§ã³ãèãã¾ããç§ãã¡ã¯ã¡ãã»ã¼ã¸ã³ã°ã¢ããªãæ¸ãã¦ãããå©ç¨è
ã¯ã«ã³ãåºåãã§åä¿¡è
ã®ãªã¹ã(John, Pete, Mary)ãå
¥åãã¾ããããããæã
ã«ã¨ã£ã¦ã¯ãï¼ã¤ã®æååãããååã®é
åã®æ¹ãã¯ããã«æ±ããããã§ãããããå¾ãæ¹æ³ã¯ï¼
str.split(delim) ã¡ã½ããã¯ãã¾ãã«ããããã¾ããä¸ããããåºåãæå delim ã§æååãé
åã«åå²ãã¾ãã
ä¸ã®ä¾ã§ã¯ãã¹ãã¼ã¹ã«ç¶ãã«ã³ãã§åå²ãã¦ãã¾ã:
let names = 'Bilbo, Gandalf, Nazgul';
let arr = names.split(', ');
for (let name of arr) {
alert( `A message to ${name}.` ); // A message to Bilbo (ã¨ä»ã®åå)
}
split ã¡ã½ããã¯ä»»æã®2ã¤ç®ã®æ°å¤ã®å¼æ°ãæã£ã¦ãã¾ããããã¯é
åã®é·ãã®å¶éã§ãããããããæå®ãããå ´åãä½åãªè¦ç´ ã¯ç¡è¦ããã¾ããå®éã«ã¯ã»ã¨ãã©ä½¿ããã¾ãããã:
let arr = 'Bilbo, Gandalf, Nazgul, Saruman'.split(', ', 2);
alert(arr); // Bilbo, Gandalf
s ã空ã«ã㦠split(s) ãå¼ã³åºãã¨ãæååãæåã®é
åã«åå²ãã¾ã:
let str = "test";
alert( str.split('') ); // t,e,s,t
arr.join(str) 㯠split ã¨éãè¡ãã¾ããarr ã®ã¢ã¤ãã ã str ã§ç¹ãã æååãä½ãã¾ãã
ä¾:
let arr = ['Bilbo', 'Gandalf', 'Nazgul'];
let str = arr.join(';');
alert( str ); // Bilbo;Gandalf;Nazgul
reduce/reduceRight
é
åã«å¯¾ãã¦ç¹°ãè¿ãå¦çãå¿
è¦ãªã¨ãã¯ãforEach, for ããã㯠for..of ã使ããã¨ãã§ãã¾ãã
åè¦ç´ ã®ãã¼ã¿ãå復ãã¦è¿ãå¿
è¦ãããã¨ãã«ã¯ãmapã使ããã¨ãã§ãã¾ãã
ã¡ã½ãã arr.reduce 㨠arr.reduceRight ãã¾ããã®ç¨®é¡ã«å±ãã¾ãããå°ãè¤éã§ãããããã¯ãé åã«åºã¥ãã¦åä¸ã®å¤ãè¨ç®ããããã«ä½¿ç¨ããã¾ãã
æ§æ:
let value = arr.reduce(function(accumulator, item, index, arr) {
// ...
}, initial);
颿°ã¯åè¦ç´ ã«é çªã«é©ç¨ããããã®çµæã次ã®å¼ã³åºãã« âå¼ãç¶ãâ ã¾ã:
弿°:
accumulatorâ åã®é¢æ°å¼ã³åºãã®çµæã§ãååã¯initialã¨ç価ã§ãï¼initialãæå®ããã¦ããå ´åï¼itemâ ç¾å¨ã®é åã®é ç®ã§ããindexâ ä½ç½®ã§ããarrâ é åã§ãã
颿°ãé©ç¨ãããã¨ãåã®é¢æ°å¼ã³åºãã®çµæããæ¬¡ã®é¢æ°å¼ã³åºãã®æåã®å¼æ°ã¨ãã¦æ¸¡ããã¾ãã
ãããã£ã¦ãæåã®å¼æ°ã¯åºæ¬çã«ã以åã®ãã¹ã¦ã®å®è¡ã®çµåçµæãæ ¼ç´ããã¢ãã¥ã ã¬ã¼ã¿ã§ããããã¦ãæå¾ã«ãã㯠reduce ã®çµæã«ãªãã¾ãã
è¤éã«è¦ãã¾ããï¼
ãããæ´ãããã®æãç°¡åãªæ¹æ³ã¯ãä¾ãè¦ããã§ãã
ããã§ã¯ãï¼è¡ã§é åã®åè¨ãåå¾ãã¾ãã
let arr = [1, 2, 3, 4, 5];
let result = arr.reduce((sum, current) => sum + current, 0);
alert(result); // 15
ããã§ã¯ã2ã¤ã®å¼æ°ã ãã使ç¨ãã reduce ã®æãä¸è¬çãªãã¿ã¼ã³ã使ç¨ãã¾ããã
ä½ãèµ·ãã¦ãããã詳細ãè¦ã¦ã¿ã¾ãããã
- æåã®å®è¡ã§
sumã¯initialå¤(reduceã®æå¾ã®å¼æ°)ã§ããã0ã§ããããã¦ãcurrentã¯æåã®é åè¦ç´ ã§1ã«ãªãã¾ããå¾ã£ã¦ãçµæã¯1ã§ãã - ï¼åç®ã®å®è¡ã§ã¯ã
sum = 1ã§ã2ã¤ç®ã®é åè¦ç´ (2)ãããã«è¶³ãã¦è¿ãã¾ãã - ï¼åç®ã®å®è¡ã§ã¯ã
sum = 3ã§ãããã«ï¼ã¤è¦ç´ ãè¶³ãã¾ãããããç¶ãã¾ãã
è¨ç®ã®ããã¼:
ã¾ããæ¬¡ã®ãã¼ãã«ã§ã¯ãåè¡ã¯æ¬¡ã®é åè¦ç´ ã®é¢æ°å¼ã³åºãã表ãã¦ãã¾ãã
sum |
current |
result |
|
|---|---|---|---|
| æåã®å¼ã³åºã | 0 |
1 |
1 |
| 2åç®ã®å¼ã³åºã | 1 |
2 |
3 |
| 3åç®ã®å¼ã³åºã | 3 |
3 |
6 |
| 4åç®ã®å¼ã³åºã | 6 |
4 |
10 |
| 5åç®ã®å¼ã³åºã | 10 |
5 |
15 |
ãããããåããããã«ãåã®å¼ã³åºãã®çµæã¯æ¬¡ã®å®è¡ã®ã¨ãã®æåã®å¼æ°ã«ãªã£ã¦ãã¾ãã
ã¾ãã initial å¤ãçç¥ãããã¨ãã§ãã¾ãã:
let arr = [1, 2, 3, 4, 5];
// reduce ããåæå¤ãåé¤ãã(æå¾ã® 0 ãåé¤)
let result = arr.reduce((sum, current) => sum + current);
alert( result ); // 15
çµæã¯åãã§ãããªããªããåæå¤ãæå®ããã¦ããªãå ´åãreduce ã¯é
åã®æåã®è¦ç´ ãåæå¤ã¨ã¿ãªãã2ã¤ç®ã®è¦ç´ ããç¹°ãè¿ãå¦çãå§ããããã§ãã
è¨ç®ãã¼ãã«ã¯ãä¸ã¨åãã§æåã®è¡ãå¼ãããã®ã§ãã
ãããããã®ãããªå©ç¨ã¯æ¥µåº¦ã®æ³¨æãè¦æ±ãã¾ããããé
åã空ã®å ´åãåæå¤ããªãç¶æ
ã§ reduce ãå¼ã³åºãã¨ãã¨ã©ã¼ãçºçãã¦ãã¾ãã¾ãã
ä¾:
let arr = [];
// Error: åæå¤ãªãã®ç©ºé
åã® reduce ã¯ã¨ã©ã¼ã§ã
// åæå¤ãåå¨ããå ´åãreduce ã¯ç©ºã® arr ã«å¯¾ããããè¿ãã¾ãã
arr.reduce((sum, current) => sum + current);
å¾ã£ã¦ã常ã«åæå¤ãæå®ãããã¨ããããããã¾ãã
arr.reduceRight ã¡ã½ãããåãããã¨ãè¡ãã¾ãããå³ããå·¦ã«å®è¡ãã¾ãã
Array.isArray
é åã¯å¥ã®è¨èªã®åãå½¢æãã¾ããã ãããã¯ãªãã¸ã§ã¯ãã«åºã¥ãã¦ãã¾ãã
ãªã®ã§ typeof ã§ã¯ãé常ã®ãªãã¸ã§ã¯ãã¨é
åãåºå¥ããã®ã«ã¯å©ãã«ãªãã¾ãã:
alert(typeof {}); // object
alert(typeof []); // object(åã)
â¦ããããé
åã¯é »ç¹ã«ä½¿ç¨ãããããããã®ããã®ç¹å¥ãªã¡ã½ãã Array.isArray(value) ãããã¾ããããã¯ãvalue ãé
åã®ã¨ãã« true ããããã§ãªãå ´åã«ã¯ false ãè¿ãã¾ãã
alert(Array.isArray({})); // false
alert(Array.isArray([])); // true
ã»ã¨ãã©ã®ã¡ã½ãã㯠âthisArgâ ããµãã¼ããã¾ã
findãfilterãmapãã®ãããªé¢æ°ãå¼ã³åºãã»ã¨ãã©ã®é
åã¡ã½ããã¯ãsort ã®ä¾å¤ãé¤ãã¦ãä»»æã®è¿½å ãã©ã¡ã¼ã¿ thisArg ãåãåãã¾ãã
ããã¯æ®ã©ä½¿ãããªãããããã®ãã©ã¡ã¼ã¿ã¯ä¸ã®ã»ã¯ã·ã§ã³ã§ã¯èª¬æããã¦ãã¾ãããããããå®å ¨æ§ã®ããã«ã¯ãããã«ãã¼ããå¿ è¦ãããã¾ãã
ãããã®ã¡ã½ããã®å®å ¨ãªæ§æã§ã:
arr.find(func, thisArg);
arr.filter(func, thisArg);
arr.map(func, thisArg);
// ...
// thisArg ã¯ãªãã·ã§ã³ã®æå¾ã®å¼æ°ã§ã
thisArg ãã©ã¡ã¼ã¿ã®å¤ã¯ func ã§ã® this ã«ãªãã¾ãã
ä¾ãã°ãããã§ã¯ filter ã§ army ãªãã¸ã§ã¯ãã®ã¡ã½ããã使ç¨ããthisArg ã¯ãã®ã³ã³ããã¹ããæ¸¡ãã¾ãã:
let army = {
minAge: 18,
maxAge: 27,
canJoin(user) {
return user.age >= this.minAge && user.age < this.maxAge;
}
};
let users = [
{age: 16},
{age: 20},
{age: 23},
{age: 30}
];
// army.canJoin ã true ã¨ãªãã¦ã¼ã¶ãè¦ã¤ãã¾ã
let soldiers = users.filter(army.canJoin, army);
alert(soldiers.length); // 2
alert(soldiers[0].age); // 20
alert(soldiers[1].age); // 23
ããä¸ã®ä¾ã§ users.filter(army.canJoin) ã¨ãã¦ããå ´åãarmy.canJoin ã¯ã¹ã¿ã³ãã¢ãã¼ã³ã®é¢æ°ã¨ãã¦å¼ã³åºããããããthis=undefined ã§ããã峿ã¨ã©ã¼ã«ãªãã¾ãã
å¼ã³åºã users.filter(army.canJoin, army) 㯠users.filter(user => army.canJoin(user)) ã«ç½®ãæãå¯è½ã§ãããåããã¨ããã¾ããå¤ãã®äººã«ã¨ã£ã¦ããçè§£ããããã®ã§ãå¾è
ã®æ¹ãããå©ç¨ããã¾ãã
ãµããª
é åã¡ã½ããã® ãã¼ãã·ã¼ã ã§ã:
-
è¦ç´ ã®è¿½å /åé¤ãããå ´å:
push(...items)â ã¢ã¤ãã ãæ«å°¾ã«è¿½å ãã¾ã,pop()â æ«å°¾ããã¢ã¤ãã ãæ½åºãã¾ã,shift()â å é ããã¢ã¤ãã ãæ½åºãã¾ã,unshift(...items)â å é ã«ã¢ã¤ãã ã追å ãã¾ã.splice(pos, deleteCount, ...items)â ã¤ã³ããã¯ã¹posããdeleteCountæ°è¦ç´ ãåé¤ãitemsãæ¿å ¥ãã¾ããslice(start, end)â æ°ããé åãä½ããstartããendã¾ã§(endã¯å«ã¾ãªã) ã®è¦ç´ ãã³ãã¼ãã¾ããconcat(...items)â æ°ããé åãè¿ãã¾ã: ç¾å¨ã®ãã®ãã¹ã¦ãã³ãã¼ããitemsã追å ãã¾ããitemsã®ãããããé åã®å ´åããã®è¦ç´ ãåå¾ããã¾ãã
-
è¦ç´ ãæ¤ç´¢ããå ´å:
indexOf/lastIndexOf(item, pos)â ä½ç½®posããå§ãã¦itemãæ¢ãã¾ãã ã¤ã³ããã¯ã¹ãã¾ãã¯è¦ã¤ãããªãã£ãå ´åã¯-1ãè¿ãã¾ããincludes(value)â é åãvalueãæã£ã¦ããå ´åtrueãè¿ãã¾ããããã§ãªããã°falseã§ããfind/filter(func)â 颿°ãä»ãã¦è¦ç´ ããã£ã«ã¿ãªã³ã°ããtrueãè¿ãæåã®/ãã¹ã¦ã®å¤ãè¿ãã¾ããfindIndexã¯findã®ããã§ãããå¤ã®ä»£ããã«ã¤ã³ããã¯ã¹ãè¿ãã¾ãã
-
è¦ç´ ãå復å¦çããã«ã¯:
forEach(func)â ãã¹ã¦ã®è¦ç´ ã«å¯¾ãã¦funcãå¼ã³åºããä½ãè¿ãã¾ããã
-
é åã夿ããã«ã¯:
map(func)â ãã¹ã¦ã®è¦ç´ ã«å¯¾ãã¦funcãå¼ã³åºããçµæããæ°ããé åã使ãã¾ããsort(func)â é åãé©åãªä½ç½®ã§ã½ã¼ããããããè¿ãã¾ããreverse()â é åãå転ãã¦ãããè¿ãã¾ããsplit/joinâ æååãé åã«å¤æããããæ»ãã¾ããreduce/reduceRight(func, initial)â åè¦ç´ ã«å¯¾ãã¦funcãå¼ã³åºããå¼ã³åºãã®éã«ä¸éçµæãæ¸¡ããã¨ã§é åå ¨ä½ã®åä¸ã®å¤ãè¨ç®ãã¾ãã
-
ããã«:
Array.isArray(arr)ã¯arrãé åãã©ããããã§ãã¯ãã¾ãã
sort, reverse 㨠splice ã¡ã½ããã¯ãé
åèªèº«ã夿´ãããã¨ã«æ³¨æãã¦ãã ããã
ãããã®ã¡ã½ããã¯æã使ããããã®ã§ãã¦ã¼ã¹ã±ã¼ã¹ã®99%ãã«ãã¼ãã¾ãããä»ã«ãããã¤ãããã¾ã:
-
arr.some(fn)/arr.every(fn) ã¯é åããã§ãã¯ãã¾ãã
颿°
fnã¯mapã¨åãããã«é åã®åè¦ç´ ã§å¼ã°ãã¾ãããã ã©ãã/ãã¹ã¦ ã®çµæãtrueã§ããã°true, ãã以å¤ã¯falseã«ãªãã¾ãããããã®ã¡ã½ããã¯
||ã&&æ¼ç®åã®ããã«æ¯ãèãã¾ããããfnãçã®å¤ãè¿ãå ´åãarr.some()ã¯ããã«trueãè¿ããæ®ãã®é ç®ã«å¯¾ããã¤ãã¬ã¼ã·ã§ã³ã忢ãã¾ããfnãå½ã®å¤ãè¿ãå ´åã¯ãarr.every()ã¯ããã«falseãè¿ããåæ§ã«æ®ãã®é ç®ã®ã¤ãã¬ã¼ã·ã§ã³ã¯åæ¢ãã¾ããeveryã¯é åãæ¯è¼ããã®ã«ä½¿ãã¾ã:function arraysEqual(arr1, arr2) { return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]); } alert( arraysEqual([1, 2], [1, 2])); // true -
arr.fill(value, start, end) â ã¤ã³ããã¯ã¹
startããendã¾ã§valueã§é åãåãã¾ãã -
arr.copyWithin(target, start, end) â ä½ç½®
startããendã¾ã§ã®è¦ç´ ããèªèº« ã®targetã®ä½ç½®ã«ã³ãã¼ãã¾ã (æ¢åã®ãã®ã䏿¸ããã¾ã)ã -
arr.flat(depth)/arr.flatMap(fn) ã¯å¤æ¬¡å é åãããã©ãããªé åãçæãã¾ãã
å®å ¨ãªãªã¹ã㯠manual ãè¦ã¦ãã ããã
åãã¦ã¿ãã¨ããå¤ãã®ã¡ã½ãããããè¦ããã®ãã¨ã¦ãé£ããããã«è¦ããããããã¾ãããããããå®éã«ã¯ããè¦ãããããã¯ããã«ç°¡åã§ãã
ãã¼ãã·ã¼ããè¦ã¦ãããããèªèãã¦ãã ããã ããããããã®ãã£ãã¿ã¼ã®ã¿ã¹ã¯ã§ç·´ç¿ãã¦ãã ãããããããã°é åã¡ã½ããã®çµé¨ãç©ããã¨ãã§ãã¾ãã
ä»å¾ãé åã§ä½ããããå¿ è¦ãããã¨ããã©ãããã°ãããåãããªãã¨ãã¯ãã¤ã§ãããã«æ¥ã¦ã ãã¼ãã·ã¼ã ãè¦ã¦æ£ããã¡ã½ãããè¦ã¤ãã¦ãã ãããä¾ã¯ããªããæ£ãããã®ã¡ã½ããã使ãã®ã«å½¹ç«ã¤ã§ãããã使ã£ã¦ããã¨èªç¶ã¨ãããã®ã¡ã½ãããè¦ãã¦ããã§ãããã
ã³ã¡ã³ã
<code>ã¿ã°ã使ã£ã¦ãã ãããè¤æ°è¡ã®å ´åã¯<pre>ãã10è¡ãè¶ ããå ´åã«ã¯ãµã³ãããã¯ã¹ã使ã£ã¦ãã ãã(plnkr, JSBin, codepenâ¦)ã