ããã°ã©ãã³ã°è¨èªã¯ãç¹°ãè¿ãå®è¡ããã¿ã¹ã¯ãç´ æ©ãçµããããã®ãã¨ã¦ã徿ã§ããåºæ¬çãªè¨ç®å¦çãããåããããªä½æ¥ãããããããã®ãªãã©ããªç¶æ³ã§ãããªãã¾ããä»åº¦ã¯ JavaScript ã§ãããã£ãç®çãæããããã«ä½¿ç¨ããã«ã¼ãæ§é ãè¦ã¦ã¿ã¾ãããã
åæç¥è: HTMLããã³CSS ã®åºç¤ãçè§£ããããã¾ã§ã®ã¬ãã¹ã³ã§èª¬æãã JavaScript ãææ¡ãã¦ãããã¨ã å¦ç¿ææ:for
ã while
ãªã©ã®ä¸è¬çãªã«ã¼ãåãfor...of
ã map()
ã®ãããªæ§æã使ç¨ãã¦ãéåãã«ã¼ãå¦çãããã¨ãã«ã¼ãã¯ãåããã¨ãä½åº¦ãä½åº¦ãç¹°ãè¿ããã®ã§ããå¤ãã®å ´åãã³ã¼ãã¯ã«ã¼ããä¸å·¡ãããã³ã«å°ããã¤ç°ãªããã¾ããåãã³ã¼ããå®è¡ãã¦ã夿°ãç°ãªããã¨ãããã¾ãã
ã«ã¼ãããã³ã¼ãã®ä¾ä¾ãã°ã<canvas>
è¦ç´ ã« 100 åã®ã©ã³ãã ãªåãæç»ãããã¨ãã¾ãï¼[æ´æ°] ãã¿ã³ãæ¼ãã¨ãä¾ãä½åº¦ãå®è¡ãã¦ç°ãªãã©ã³ãã ã³ã¬ã¯ã·ã§ã³ãè¦ããã¨ãã§ãã¾ãï¼ã
<button>æ´æ°</button> <canvas></canvas>
html {
width: 100%;
height: inherit;
background: #ddd;
}
canvas {
display: block;
}
body {
margin: 0;
}
button {
position: absolute;
top: 5px;
left: 5px;
}
ãã¡ãã¯ãã®ä¾ãå®è£ ãã¦ãã JavaScript ã³ã¼ãã§ãã
const btn = document.querySelector("button");
const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
document.addEventListener("DOMContentLoaded", () => {
canvas.width = document.documentElement.clientWidth;
canvas.height = document.documentElement.clientHeight;
});
function random(number) {
return Math.floor(Math.random() * number);
}
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
for (let i = 0; i < 100; i++) {
ctx.beginPath();
ctx.fillStyle = "rgb(255 0 0 / 50%)";
ctx.arc(
random(canvas.width),
random(canvas.height),
random(50),
0,
2 * Math.PI,
);
ctx.fill();
}
}
btn.addEventListener("click", draw);
ã«ã¼ãããã¨ã«ã¼ããªã
ããã§ãã¹ã¦ã®ã³ã¼ããçè§£ããå¿ è¦ã¯ããã¾ããããå®éã« 100 åã®åãæç»ãã¦ããé¨åãè¦ã¦ã¿ã¾ãããã
for (let i = 0; i < 100; i++) {
ctx.beginPath();
ctx.fillStyle = "rgb(255 0 0 / 50%)";
ctx.arc(
random(canvas.width),
random(canvas.height),
random(50),
0,
2 * Math.PI,
);
ctx.fill();
}
åºæ¬çãªèãæ¹ã¯çè§£ã§ããã§ããããã«ã¼ãã使ç¨ãã¦ãã®ã³ã¼ãã 100 åå復å¦çããããããããã¼ã¸ä¸ã®ã©ã³ãã ãªä½ç½®ã«åãæç»ãã¾ããã³ã¼ãã®åé ã§å®ç¾©ãã random(x)
ã¯ã0
ãã x-1
ã®éã®æ´æ°ãè¿ãã¾ãã 100 åã1000 åã10,000 åã®åãæç»ããå ´åã§ããå¿
è¦ã¨ãªãã³ã¼ãã®éã¯åãã§ãã 夿´ããªããã°ãªããªãã®ã¯ããã£ãä¸ã¤ã®æ°åã ãã§ãã
ããããã§ã«ã¼ãã使ç¨ãã¦ããªããã°ãæç»ãããåãã¨ã«ä»¥ä¸ã®ã³ã¼ããç¹°ãè¿ãã¦æ¸ãå¿ è¦ãããã¾ãã
ctx.beginPath();
ctx.fillStyle = "rgb(255 0 0 / 50%)";
ctx.arc(
random(canvas.width),
random(canvas.height),
random(50),
0,
2 * Math.PI,
);
ctx.fill();
ããã¯ã¨ã¦ãéå±ã§ãä¿å®ã大å¤ã§ãããã
ã³ã¬ã¯ã·ã§ã³å ã®ã«ã¼ãå¦çã«ã¼ãã使ç¨ããå ´åã®ã»ã¨ãã©ã¯ãã¢ã¤ãã ã®ã³ã¬ã¯ã·ã§ã³ããã£ã¦ããã¹ã¦ã®ã¢ã¤ãã ã«å¯¾ãã¦ä½ããè¡ãããã¨ãã§ãã
Array
ã¯ãã³ã¬ã¯ã·ã§ã³ã®ä¸ç¨®ã§ãããã®ã³ã¼ã¹ã®é
åã®ç« ã§ç´¹ä»ãã¾ããã ããããJavaScript ã«ã¯ä»ã«ã Set
ã Map
ãªã©ã®ã³ã¬ã¯ã·ã§ã³ãããã¾ãã
ã³ã¬ã¯ã·ã§ã³ãã«ã¼ãå¦çããåºæ¬çãªãã¼ã«ã¯ for...of
ã«ã¼ãã§ãã
const cats = ["Leopard", "Serval", "Jaguar", "Tiger", "Caracal", "Lion"];
for (const cat of cats) {
console.log(cat);
}
ãã®ä¾ã§ã¯ãfor (const cat of cats)
ã¯æ¬¡ã®ããã«è¨ã£ã¦ãã¾ãã
cats
ãæå®ãããããã³ã¬ã¯ã·ã§ã³å
ã®æåã®ã¢ã¤ãã ãåå¾ãããcat
ã«å²ãå½ã¦ã¦ã䏿¬å¼§ {}
ã§å²ã¾ããã³ã¼ããå®è¡ãããJavaScript ã«ã¯ãã³ã¬ã¯ã·ã§ã³ã«å¯¾ãã¦ããç¹åããã«ã¼ããããã®ã§ãããã§ã¯ãã®ãã¡ã® 2ã¤ãç´¹ä»ãã¾ãã
map()
ã使ç¨ããã¨ãã³ã¬ã¯ã·ã§ã³å
ã®åã¢ã¤ãã ã«å¯¾ãã¦ä½ããè¡ãã夿´ãããã¢ã¤ãã ãæ ¼ç´ããæ°ããã³ã¬ã¯ã·ã§ã³ã使ãããã¨ãã§ãã¾ãã
function toUpper(string) {
return string.toUpperCase();
}
const cats = ["Leopard", "Serval", "Jaguar", "Tiger", "Caracal", "Lion"];
const upperCats = cats.map(toUpper);
console.log(upperCats);
// [ "LEOPARD", "SERVAL", "JAGUAR", "TIGER", "CARACAL", "LION" ]
ããã§ã¯ã cats.map()
ã«é¢æ°ã渡ãã¨ãmap()
ã¯é
åå
ã®ããããã®ã¢ã¤ãã ã«ãã®é¢æ°ã 1 åãã¤ããã®ã¢ã¤ãã ãæ¸¡ãã¦å¼ã³åºãã¾ããããã¦ãããããã®é¢æ°å¼ã³åºãã®è¿å¤ãæ°ããé
åã«è¿½å ããæå¾ã«æ°ããé
åãè¿ãã¾ãããã®å ´åãæä¾ãã颿°ã¯ã¢ã¤ãã ã大æåã«å¤æããã®ã§ãçµæã¨ãã¦å¾ãããé
åã«ã¯ããã¹ã¦ã®ãã³ç§åç©ãã大æåã§æ ¼ç´ããã¾ãã
[ "LEOPARD", "SERVAL", "JAGUAR", "TIGER", "CARACAL", "LION" ]
filter()
ã使ç¨ããã¨ãã³ã¬ã¯ã·ã§ã³å
ã®ããããã®ã¢ã¤ãã ããã¹ãããä¸è´ããã¢ã¤ãã ã®ã¿ãæ ¼ç´ããæ°ããã³ã¬ã¯ã·ã§ã³ã使ãããã¨ãã§ãã¾ãã
function lCat(cat) {
return cat.startsWith("L");
}
const cats = ["Leopard", "Serval", "Jaguar", "Tiger", "Caracal", "Lion"];
const filtered = cats.filter(lCat);
console.log(filtered);
// [ "Leopard", "Lion" ]
ãã㯠map()
ã¨ããä¼¼ã¦ãã¾ãããæ¸¡ã颿°ãè«çå¤ãè¿ãç¹ãç°ãªãã¾ãã ãã true
ãè¿ããªããã¢ã¤ãã ã¯æ°ããé
åã«å«ã¾ãã¾ãã ãã®é¢æ°ã§ã¯ãã¢ã¤ãã ãæå "L" ã§å§ã¾ããã©ããããã¹ãããã®ã§ãçµæã¯ååã "L" ã§å§ã¾ãç«ã ããå«ãé
åã«ãªãã¾ãã
ãªããmap()
㨠filter()
ã¯ãã©ã¡ãããã颿°å¼ã¨ä¸ç·ã«ä½¿ããã¾ããããã¯é¢æ°ã¢ã¸ã¥ã¼ã«ã§å¦ã³ã¾ãã 颿°å¼ã使ç¨ããã¨ãä¸ã®ä¾ããã£ã¨ã³ã³ãã¯ãã«æ¸ãç´ããã¨ãã§ãã¾ãã
const cats = ["Leopard", "Serval", "Jaguar", "Tiger", "Caracal", "Lion"];
const filtered = cats.filter((cat) => cat.startsWith("L"));
console.log(filtered);
// [ "Leopard", "Lion" ]
æ¨æºç㪠for ã«ã¼ã
ä¸ã®ãåãæããä¾ã§ã¯ãã«ã¼ããããã¢ã¤ãã ã®ã³ã¬ã¯ã·ã§ã³ããã訳ã§ã¯ããã¾ãããå®éã«ã¯ãåãã³ã¼ãã 100 åå®è¡ãããã ãã§ãã ãã®ãããªç¨éã§ã¯ãfor
ã«ã¼ãã使ç¨ããå¿
è¦ãããã¾ãã ããã¯ä»¥ä¸ã®ãããªæ§æãããã¾ããæ§æã¯ä»¥ä¸ã®éãã§ãã
for (åæåå¦ç; æ¡ä»¶; æå¾ã®å¼) {
// å®è¡ããã³ã¼ã
}
ããã§ã¯ã次ã®ããã«ãªãã¾ãã
for
ãã¼ã¯ã¼ãã«ç¶ãæ¬å¼§ãããã¾ãã
æ¬å¼§ã®ä¸ã«ã¯ãã»ãã³ãã³ã§åºåããã以ä¸ã®é ç®ãããã¾ãã
true
ã§ã¯ãªããªããã¤ã³ãã«è¿ã¥ãã¦ããã¾ããã³ã¼ãã®ãããã¯ãæ ¼ç´ãã䏿¬å¼§ããã®ã³ã¼ãã¯ãã«ã¼ããå復å¦çããããã³ã«å®è¡ããã¾ãã
å®éã®ä¾ãè¦ã¦ããããã®æ©è½ãããæç¢ºã«ã¤ã¡ã¼ã¸ã§ããããã«ãã¾ãããã
<button id="calculate">è¨ç®</button>
<button id="clear">ã¯ãªã¢</button>
<pre id="results"></pre>
const results = document.querySelector("#results");
function calculate() {
for (let i = 1; i < 10; i++) {
const newResult = `${i} x ${i} = ${i * i}`;
results.textContent += `${newResult}\n`;
}
results.textContent += "\nå®äº!\n\n";
}
const calculateBtn = document.querySelector("#calculate");
const clearBtn = document.querySelector("#clear");
calculateBtn.addEventListener("click", calculate);
clearBtn.addEventListener("click", () => (results.textContent = ""));
ããã¯æ¬¡ã®ãããªåºåçµæã¨ãªãã¾ãã
ãã®ã³ã¼ãã¯ã1 ãã 9 ã¾ã§ã®æ°åã®å¹³æ¹ãè¨ç®ãããã®çµæãæ¸ãåºãã¾ããã³ã¼ãã®ä¸å¿ã¯ãè¨ç®ãè¡ã for
ã«ã¼ãã§ãã
for (let i = 1; i < 10; i++)
ã®è¡ã 3 ã¤ã®é¨åã«åå²ãã¦ã¿ã¾ãããã
let i = 1
: ã«ã¦ã³ã¿ã¼å¤æ°ã§ãã i
㯠1
ããå§ãã¾ããã«ã¼ããä¸å¨ãããã³ã«ã«ã¦ã³ã¿ã¼ã«ä»£å
¥ãããããã«ã¦ã³ã¿ã¼ã« let
ã使ç¨ããªããã°ãªããªããã¨ã«æ³¨æãã¦ãã ãããi < 10
: i
ã 10
ãããå°ããéããã«ã¼ããç¹°ãè¿ãç¶ãã¾ããi++
: ã«ã¼ããä¸å¨ãããã³ã« i
ã« 1 ãå ç®ãã¾ããã«ã¼ãã®å
é¨ã§ã¯ãç¾å¨ã® i
ã®å¤ã®å¹³æ¹ãããªãã¡ i * i
ãè¨ç®ãã¾ããè¨ç®ããå
容ã¨çµæã表ãæååã使ããåºåããã¹ãã«è¿½å ãã¾ããã¾ããæ¬¡ã«è¿½å ããæååãæ¹è¡ãããããã«ã\n
ã追å ãã¦ãã¾ããããªãã¡ã
i = 1
ãªã®ã§ 1 x 1 = 1
ã追å ãã¾ããi = 2
ãªã®ã§ 2 x 2 = 4
ã追å ãã¾ããi
ã 10
ã¨çãããªã£ãããã«ã¼ãã®å®è¡ã忢ãã¦ãã«ã¼ãã®ä¸ã®æ¬¡ã®ã³ã¼ãã«ã¾ã£ããç§»åããå®äº!
ã¨ããã¡ãã»ã¼ã¸ãæ°ããè¡ã«åºåãã¾ããfor
ã«ã¼ãã®ä»£ããã«ãfor...of
ã«ã¼ãã使ç¨ãã¦ã³ã¬ã¯ã·ã§ã³ãå復å¦çãããã¨ãã§ãã¾ãã
ä¸ã® for...of
ã®ä¾ãããä¸åº¦è¦ã¦ã¿ã¾ãããã
const cats = ["Leopard", "Serval", "Jaguar", "Tiger", "Caracal", "Lion"];
for (const cat of cats) {
console.log(cat);
}
ãã®ã³ã¼ãã¯æ¬¡ã®ããã«æ¸ãæãããã¨ãã§ãã¾ãã
const cats = ["Leopard", "Serval", "Jaguar", "Tiger", "Caracal", "Lion"];
for (let i = 0; i < cats.length; i++) {
console.log(cats[i]);
}
ãã®ã«ã¼ãã§ã¯ãi
ã 0
ã§éå§ããi
ãé
åã®é·ãã«éããæç¹ã§åæ¢ãã¦ãã¾ãã ããã¦ãã«ã¼ãã®ä¸ã§ i
ã使ã£ã¦ãé
åã®ããããã®ã¢ã¤ãã ã«é çªã«ã¢ã¯ã»ã¹ãã¦ãã¾ãã
JavaScript ã®åæã®ãã¼ã¸ã§ã³ã§ã¯ãfor...of
ã¯åå¨ããªãã£ãã®ã§ããããé
åãå復å¦çããæ¨æºçãªæ¹æ³ã§ããã ãããããã®æ¹æ³ã¯ãã³ã¼ãã«ãã°ãå¼ãèµ·ããå¯è½æ§ãé«ããªãã¾ããä¾ãã°ã
i
ã 1
ããå§ãã¦ãã¾ãããããã¾ãããlength - 1
ã«ãããã¨ãå¿ãã¦ãi <= cats.length
ã§æ¢ãã¦ãã¾ãããããã¾ããããã®ãããªçç±ãããé常ã¯ãã§ããéã for...of
ã使ç¨ããã®ããã¹ãã§ãã
æã«ã¯ãé
åãç¹°ãè¿ãå¦çããããã« for
ã«ã¼ãã使ç¨ããå¿
è¦ãããã¾ãã ä¾ãã°ã以ä¸ã®ã³ã¼ãã§ã¯ãç«ã®ä¸è¦§ãã¡ãã»ã¼ã¸ã¨ãã¦åºåãããã
const cats = ["Pete", "Biggles", "Jasmine"];
let myFavoriteCats = "My cats are called ";
for (const cat of cats) {
myFavoriteCats += `${cat}, `;
}
console.log(myFavoriteCats); // "My cats are called Pete, Biggles, Jasmine, "
æçµçã«åºåãããæç« ã¯ãã¾ãæ´ã£ããã®ã§ã¯ããã¾ããã
My cats are called Pete, Biggles, Jasmine,
æå¾ã®ç«ã«ã¤ãã¦ã¯ããã®ããã«å¥ã®å¦çããã¦ãããã®ãæã¾ããã¨æãã¾ãã
My cats are called Pete, Biggles, and Jasmine.
ãããããããè¡ãã«ã¯ãã«ã¼ãããã¤æå¾ã®å復å¦çã«å
¥ã£ãããç¥ãå¿
è¦ãããã¾ãããã®ããã«ã¯ãfor
ã«ã¼ãã使ããi
ã®å¤ã調ã¹ãã°ããã®ã§ãã
const cats = ["Pete", "Biggles", "Jasmine"];
let myFavoriteCats = "My cats are called ";
for (let i = 0; i < cats.length; i++) {
if (i === cats.length - 1) {
// é
åã®æå¾ã«ããå ´å
myFavoriteCats += `and ${cats[i]}.`;
} else {
myFavoriteCats += `${cats[i]}, `;
}
}
console.log(myFavoriteCats); // "My cats are called Pete, Biggles, and Jasmine."
break ã§ã«ã¼ããçµäº
ãã¹ã¦ã®å復å¦çãçµäºããåã«ã«ã¼ããçµäºãããã¨ãã¯ãbreak æã使ç¨ãã¦çµäºããããã¨ãã§ãã¾ãã ååã®è¨äºã® switch æã§ãå
¥åããå¤ã switch æã® case ã«ä¸è´ããã¨ããswitch æãæãããã以éã®ã³ã¼ããå®è¡ããããã« break
æã使ç¨ãã¾ããã
ããã¯ã«ã¼ãã§ãåæ§ã§ãbreak
æã使ç¨ãããã¨ã§å³æã«ã«ã¼ããæãã¦ããã©ã¦ã¶ã¼ã«ç¶ãã®ã³ã¼ããå®è¡ããããã¨ãã§ãã¾ãã
é£çµ¡å
ãé»è©±çªå·ã®é
åãæ¤ç´¢ãã¦ãè¦ã¤ãããçªå·ã ããè¿ãããã¨ãã¾ãã ã¾ã㯠HTML ã§ããæ¤ç´¢ããããã¹ãå
¥åç¨ã® <input>
è¦ç´ ã¨ãæ¤ç´¢å
容ãéä¿¡ (submit) ãã <button>
è¦ç´ ãæ¤ç´¢çµæã表示ãã <p>
è¦ç´ ãåãã¾ãã
<label for="search">é£çµ¡å
ã®åå: </label>
<input id="search" type="text" />
<button>æ¤ç´¢</button>
<p></p>
ãã㦠JavaScript ã§ãã
const contacts = [
"ã¯ãªã¹:2232322",
"ãµã©:3453456",
"ãã«:7654322",
"ã¡ã¢ãªã¼:9998769",
"ãã¤ã¢ã³:9384975",
];
const para = document.querySelector("p");
const input = document.querySelector("input");
const btn = document.querySelector("button");
btn.addEventListener("click", () => {
const searchName = input.value.toLowerCase();
input.value = "";
input.focus();
para.textContent = "";
for (const contact of contacts) {
const splitContact = contact.split(":");
if (splitContact[0].toLowerCase() === searchName) {
para.textContent = `${splitContact[0]}ã®é»è©±çªå·ã¯ ${splitContact[1]} ã§ãã`;
break;
}
}
if (para.textContent === "") {
para.textContent = "é£çµ¡å
ãè¦ã¤ããã¾ããã";
}
});
ã³ã¼ãã®å é ã§ãããã¤ã夿°ã宣è¨ãã¦ãã¾ãããã®ä¸ã«ãé£çµ¡å ã®æ å ±ãæã£ãé åããããåè¦ç´ ã¯ååã¨é»è©±çªå·ãã³ãã³ã§åºåã£ãæååã¨ãªã£ã¦ãã¾ãã
次ã«ããã¿ã³ (btn
) ã«ã¤ãã³ããªã¹ãã¼ãè¨å®ãã¦ãã¾ãããã¿ã³ãæ¼ãããã¨ãã«æ¤ç´¢çµæãæ»ã£ã¦ããããã«ãªã£ã¦ãã¾ãã
ããã¹ãå
¥åæ¬ã«å
¥åãããå¤ã searchName
ã¨ãã夿°ã«æ ¼ç´ãã¦ãããæ¬¡ã®æ¤ç´¢ã«åããå
¥åæ¬ãã¯ãªã¢ãããã©ã¼ã«ã¹ãè¨å®ãã¦ãã¾ããæ¤ç´¢ã«å¤§æåå°æåãåºå¥ããªããããæååã« toLowerCase()
ãå®è¡ãã¦ããã®ã«æ³¨æãã¦ãã ããã
ãããããæ¬é¡ã® for...of
ã«ã¼ãã§ãã
splitContact
ã¨ããé
åã«æ ¼ç´ãã¾ããsplitContact[0]
ï¼é£çµ¡å
ã®ååï¼ãå
¥åããã searchName
ã«ã¾ã toLowerCase()
ã使ã£ã¦å°æååãããã®ã¨çããããå¤å®ãã¾ãã ããçãããã°ãæååãæ®µè½ã«å
¥ãã¦ãã®é£çµ¡å
ã®é»è©±çªå·ã示ããbreak
ã使ç¨ãã¦ã«ã¼ããçµäºãã¦ãã¾ããã«ã¼ãã®å¾ãé£çµ¡å ãè¨å®ããããã©ããããã§ãã¯ããè¨å®ããã¦ããªãå ´åã¯æ®µè½ããã¹ãããé£çµ¡å ãè¦ã¤ããã¾ããããã«è¨å®ãã¦ãã¾ãã
ã¡ã¢: ãã¹ã¦ã®ã½ã¼ã¹ã¯ GitHub ã§è¦ããã¨ãã§ãã¾ãï¼åãã¦ãããã¢ãããã¾ãï¼ã
continue ã§ç¹°ãè¿ããã¹ãããcontinue æã¯ break
ã¨åããããªåä½ããã¾ããããã©ãã«ã¼ããå®å
¨ã«æãã¦ãã¾ãã®ã§ã¯ãªããæ¬¡ã®ç¹°ãè¿ãã¾ã§é£ã°ãã¾ãã ããã§ã¯ãä»åº¦ã¯å
¥åã¨ãã¦æ°å¤ãåãåãããã®æ°ä»¥ä¸ã§æ´æ°ã®å¹³æ¹ã§ããå¤ã®ã¿ãè¿ãã¨ããä¾ãè¦ã¦ã¿ã¾ãããã
HTML ã¯åºæ¬çã«ååã®ä¾ã¨åãã§ãåç´ãªæ°å¤å ¥åã¨ãåºåç¨ã®æ®µè½ãããã¾ãã
<label for="number">æ°å¤ãå
¥åãã¦ãã ãã: </label>
<input id="number" type="number" />
<button>æ´æ°ã®å¹³æ¹ãçæ</button>
<p>åºå:</p>
JavaScript ãã»ã¨ãã©åãã§ãããã«ã¼ãèªä½ãè¥å¹²ç°ãªãã¾ãã
const para = document.querySelector("p");
const input = document.querySelector("input");
const btn = document.querySelector("button");
btn.addEventListener("click", () => {
para.textContent = "åºå: ";
const num = input.value;
input.value = "";
input.focus();
for (let i = 1; i <= num; i++) {
let sqRoot = Math.sqrt(i);
if (Math.floor(sqRoot) !== sqRoot) {
continue;
}
para.textContent += `${i} `;
}
});
åºåçµæã¯ãã¡ãã§ãã
num
) ã§ããfor
ã«ã¼ãã«ã¯ãã«ã¦ã³ã¿ã¼ã®åæå¤ã¨ãã¦ãï¼ä»å㯠0 ã§ã¯ãªãï¼1 ãä¸ããããçµäºããæ¡ä»¶ã¨ãã¦ã«ã¦ã³ã¿ã¼ãå
¥åå¤ (num
) ãã大ãããªã£ãå ´åã¨æå®ããã¦ãããã¤ãã¬ã¼ã¿ã¼ã¨ãã¦ãã«ã¦ã³ã¿ã¼ã« 1 ãã¤å ç®ããããæå®ããã¦ãã¾ãã!==
)ãå¹³æ¹æ ¹ã¯æ´æ°ã§ã¯ãªããã¨ã示ãã¦ãã¾ããæ´æ°ä»¥å¤ã«ã¯èå³ãããã¾ããã®ã§ãcontinue
æãç¨ãã¦ããã®æ°å¤ãã©ãã«ãä¿æãããã¨ãªããæ¬¡ã®ã«ã¼ãã®ç¹°ãè¿ãã¾ã§ã¹ããããã¾ããcontinue
æã¯å®è¡ããã¾ããã代ããã«ãç¾å¨ã® i
ã®å¤ã段è½ã®å
容ã®å¾ãã«ã¹ãã¼ã¹ã¨ä¸ç·ã«çµåãã¾ããã¡ã¢: ãã¹ã¦ã®ã½ã¼ã¹ã¯ GitHub ã§ãè¦ããã¨ãã§ãã¾ãï¼åãã¦ãããã¢ãããã¾ãï¼ã
while 㨠do...whilefor
㯠JavaScript ã§å©ç¨å¯è½ãªå¯ä¸ã®ã«ã¼ãã®ç¨®é¡ã§ã¯ããã¾ãããå®éã«ã¯å¤ãã®ãã®ãããã¾ããããããã®ãã¹ã¦ãçè§£ããå¿
è¦ã¯ããã¾ããããä»äºã®åãæ©è½ããããã«ç°ãªãæ¹æ³ã§èªèã§ããããã«ãä»ã®ãã®ã®æ§é ãè¦ã¦ãã価å¤ãããã¾ãã
ã¾ããwhile
ã«ã¼ããè¦ã¦ã¿ã¾ãããããã®ã«ã¼ãã®æ§æã¯æ¬¡ã®ããã«ãªãã¾ãã
åæåå¦ç
while (æ¡ä»¶) {
// å®è¡ããã³ã¼ã
æå¾ã®å¼
}
ãã㯠for
ã«ã¼ãã¨ã¨ã¦ãããä¼¼ãåä½ããã¾ãããåæå夿°ãã«ã¼ãã®åã«è¨å®ãããç¹ã¨ãæå¾ã®å¼ããããã 2 ã¤ã®é
ç®ãæ¬å¼§ã®ä¸ã«å
¥ã£ã¦ããã®ã§ã¯ãªããå®è¡ããã³ã¼ãã®å¾ã«ã«ã¼ãã®ä¸ã«å«ã¾ãã¦ããç¹ãç°ãªãã¾ãã æ¡ä»¶ã¯æ¬å¼§ã®ä¸ã«å
¥ã£ã¦ããããã®åã«ã¯ for
ã§ã¯ãªã while
ãã¼ã¯ã¼ããç½®ããã¦ãã¾ãã
åã 3 ã¤ã®é ç®ããfor ã«ã¼ãã®ä¸ã§å®ç¾©ããã¦ããã®ã¨åãé çªã§åå¨ãã¦ãã¾ãã ããã¯ãæ¡ä»¶ãçãã©ããããã§ãã¯ããåã«ãåæåå¦çãå®ç¾©ãã¦ããå¿ è¦ãããããã§ãã ããã¦ãã«ã¼ãå ã®ã³ã¼ããå®è¡ãããï¼å復å¦çãå®äºããï¼å¾ã«æå¾ã®å¼ãå®è¡ããã¾ãããããã¯æ¡ä»¶ãã¾ã çã§ããå ´åã«ã®ã¿å®è¡ããã¾ãã
ç«ã®ãªã¹ãã®ä¾ãããä¸åº¦è¦ã¦ã¿ã¾ãããããã ããwhile ã«ã¼ãã使ãããã«æ¸ãç´ãã¦ã¿ã¾ãããã
const cats = ["Pete", "Biggles", "Jasmine"];
let myFavoriteCats = "My cats are called ";
let i = 0;
while (i < cats.length) {
if (i === cats.length - 1) {
myFavoriteCats += `and ${cats[i]}.`;
} else {
myFavoriteCats += `${cats[i]}, `;
}
i++;
}
console.log(myFavoriteCats); // "My cats are called Pete, Biggles, and Jasmine."
ã¡ã¢: ããã¯æå¾ ã©ããã«åä½ãã¾ããGitHub ã§ã©ã¤ãå®è¡ãã¦ã¿ã¦ãã ããï¼å®å ¨ãªã½ã¼ã¹ã³ã¼ããè¦ããã¨ãã§ãã¾ãï¼ã
do...while ã«ã¼ãã¯ã¨ã¦ãããä¼¼ã¦ãã¾ãããwhile æ§é ã®å¥ãªå½¢ã§ãã
åæåå¦ç
do {
// å®è¡ããã³ã¼ã
æå¾ã®å¼
} while (æ¡ä»¶)
ãã®å ´åãåæåå¦çã¯åã³ãã«ã¼ããå§ã¾ãåã«æ¥ã¦ãã¾ãããã¼ã¯ã¼ãã¯ãå®è¡ããã³ã¼ãã¨ææã®å¼ãå«ã䏿¬å¼§ã®ç´åã«ããã¾ãã
do...while
ã«ã¼ã㨠while
ã«ã¼ãã®ä¸»ãªéãã¯ãdo...while
ã«ã¼ãã®ä¸ã®ã³ã¼ãã¯å¸¸ã«å°ãªãã¨ã 1 åã¯å®è¡ããã ã¨ãããã¨ã§ããããã¯ãã«ã¼ãå
ã®ã³ã¼ãã®å¾ã«æ¡ä»¶ãæ¥ãããã§ããã¤ã¾ãã常ã«ãã®ã³ã¼ããå®è¡ãããã®å¾ãããä¸åº¦å®è¡ããå¿
è¦ããããã©ããããã§ãã¯ããã®ã§ããwhile
ã«ã¼ãã for
ã«ã¼ãã§ã¯ããã§ãã¯ãæåã«æ¥ãã®ã§ããã®ã³ã¼ãã¯ä¸åº¦ãå®è¡ãããªãããããã¾ããã
do...while
ã«ã¼ãã使ç¨ããããã«ãç«ã®ãªã¹ãã®ä¾ãããä¸åº¦æ¸ãç´ãã¦ã¿ã¾ãããã
const cats = ["Pete", "Biggles", "Jasmine"];
let myFavoriteCats = "My cats are called ";
let i = 0;
do {
if (i === cats.length - 1) {
myFavoriteCats += `and ${cats[i]}.`;
} else {
myFavoriteCats += `${cats[i]}, `;
}
i++;
} while (i < cats.length);
console.log(myFavoriteCats); // "My cats are called Pete, Biggles, and Jasmine."
ã¡ã¢: ãã¡ãããããã¯æå¾ ã©ããã«åä½ãã¾ããGitHub ã§ã©ã¤ãå®è¡ãã¦ã¿ã¦ãã ããï¼å®å ¨ãªã½ã¼ã¹ã³ã¼ããè¦ããã¨ãã§ãã¾ãï¼ã
è¦å: ã©ã®ç¨®é¡ã®ã«ã¼ãã§ããåæååãå¢å ããããå ´åã«ãã£ã¦ã¯æ¸å°ããããã«ãã¦ãæçµçã«æ¡ä»¶ãå½ã«ãªãããã«ããªããã°ãªãã¾ããã ããããªããã°ã«ã¼ãã¯æ°¸é ã«é²ã¿ããã©ã¦ã¶ã¼ã¯ããå¼·å¶çã«åæ¢ãããããã¯ã©ãã·ã¥ãã¾ããããã¯ç¡éã«ã¼ãã¨å¼ã°ãã¾ãã
ã¢ã¯ãã£ãã©ã¼ãã³ã°: çºå°ã®ã«ã¦ã³ããã¦ã³ãã®ç·´ç¿ã§ã¯ãåºåããã¯ã¹ã¸ã®ç°¡åãªçºå°ã®ã«ã¦ã³ããã¦ã³ã 10 ãã Blast off ã¾ã§è¡¨ç¤ºãã¦ãã ããã å ·ä½çã«ã¯ã次ã®ãããªãã¨ããã¦ããã ãã¾ãã
10 ãã 0 ã¾ã§ã®ã«ã¼ããåæåå¦çã¨ã㦠let i = 10;
ã示ãã¾ãã
ããããã®å復å¦çã«å¯¾ãã¦ãæ°ããæ®µè½ã使ãããããåºåç¨ã® <div>
ã«è¿½å ãã¾ããconst output = document.querySelector('.output');
ã使ããã¨ã鏿ãã¾ããã ã³ã¡ã³ãå
ã§ãã«ã¼ãå
ã®ã©ããã§ä½¿ç¨ããå¿
è¦ããã 3 ã¤ã®ã³ã¼ãè¡ãæä¾ãã¾ãã
const para = document.createElement('p');
â æ°ããæ®µè½ã使ãã¾ããoutput.appendChild(para);
â åºåã® <div>
ã«æ®µè½ã追å ãã¾ããpara.textContent =
â æ®µè½å
ã®ããã¹ãããã¤ã³ã¼ã«è¨å·ã®å¾ã®å³è¾ºã«ããããã®ã«ãã¾ããå復忰ãç°ãªãã°ããã®åå¾©åæ°ã®æ®µè½ã«å
¥ããããã¹ããç°ãªãã¾ãï¼æ¡ä»¶æã¨è¤æ°ã® para.textContent =
è¡ãå¿
è¦ã§ãï¼ã
ã¤ãã¬ã¼ã¿ã¼ãå«ãããã¨ãå¿ããªãã§ãã ããï¼ã§ããããã®ä¾ã§ã¯åå復ã®å¾ã«ã«ã¦ã³ãï¼ã¢ããã§ã¯ãªãï¼ãã¦ã³ãããããi++
ã¯è¦ããªãã§ããããæ¸å°æ¹åã«ã©ããã£ã¦å復ããã®ã§ããããï¼
ã¡ã¢: ããªããã«ã¼ãï¼ä¾ãã° while(i>=0)ï¼ããã¿ã¤ãã³ã°ãå§ããã¨ããã©ã¦ã¶ã¼ãåºã¾ã£ã¦ãã¾ãããããã¾ãããçµäºæ¡ä»¶ãã¾ã å ¥åãã¦ããªãããã§ããæ³¨æãã¦ä¸ããããã®åé¡ã«å¯¾å¦ããã«ã¯ã³ã¡ã³ãã®ä¸ã«ã³ã¼ããæ¸ãå§ãã¦ãå®äºãã¦ããã³ã¡ã³ããåé¤ãããã¨ã§ãã
ééããå ´åã¯ãï¼»ãªã»ããï¼½ãã¿ã³ã使ç¨ãã¦ãã®ä¾ããã¤ã§ããªã»ããã§ãã¾ããããªããæ¬å½ã«ç«ã¡å¾çãããã[解çãè¡¨ç¤ºï¼½ãæ¼ãã¦è§£æ±ºçãè¦ã¦ãã ããã
<h2>ã©ã¤ãåºå</h2>
<div class="output" style="height: 410px;overflow: auto;"></div>
<h2>ç·¨éå¯è½ãªã³ã¼ã</h2>
<p class="a11y-label">
Esc ãæ¼ãã¨ãã³ã¼ãé åãããã©ã¼ã«ã¹ãå¤ããã¨ãã§ãã¾ãï¼Tab
ã¯ã¿ãæåãæ¿å
¥ãã¾ãï¼ã
</p>
<textarea id="code" class="playable-code" style="height: 300px;width: 95%">
const output = document.querySelector('.output');
output.textContent = "";
// let i = 10;
// const para = document.createElement('p');
// para.textContent = ;
// output.appendChild(para);
</textarea>
<div class="playable-buttons">
<input id="reset" type="button" value="ãªã»ãã" />
<input id="solution" type="button" value="è§£çã表示" />
</div>
html {
font-family: sans-serif;
}
h2 {
font-size: 16px;
}
.a11y-label {
margin: 0;
text-align: right;
font-size: 0.7rem;
width: 98%;
}
body {
margin: 10px;
background: #f5f9fa;
}
const textarea = document.getElementById("code");
const reset = document.getElementById("reset");
const solution = document.getElementById("solution");
let code = textarea.value;
let userEntry = textarea.value;
function updateCode() {
eval(textarea.value);
}
reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
solution.value = "è§£çã表示";
updateCode();
});
solution.addEventListener("click", function () {
if (solution.value === "è§£çã表示") {
textarea.value = solutionEntry;
solution.value = "è§£çãé ã";
} else {
textarea.value = userEntry;
solution.value = "è§£çã表示";
}
updateCode();
});
let jsSolution = `const output = document.querySelector('.output');
output.textContent = "";
let i = 10;
while (i >= 0) {
const para = document.createElement('p');
if (i === 10) {
para.textContent = \`Countdown \${i}\`;
} else if (i === 0) {
para.textContent = 'Blast off!';
} else {
para.textContent = i;
}
output.appendChild(para);
i--;
}`;
let solutionEntry = jsSolution;
textarea.addEventListener("input", updateCode);
window.addEventListener("load", updateCode);
// stop tab key tabbing out of textarea and
// make it write a tab at the caret position instead
textarea.onkeydown = function (e) {
if (e.code === "Tab") {
e.preventDefault();
insertAtCaret("\t");
}
if (e.code === "Escape") {
textarea.blur();
}
};
function insertAtCaret(text) {
const scrollPos = textarea.scrollTop;
let caretPos = textarea.selectionStart;
const front = textarea.value.substring(0, caretPos);
const back = textarea.value.substring(
textarea.selectionEnd,
textarea.value.length,
);
textarea.value = front + text + back;
caretPos += text.length;
textarea.selectionStart = caretPos;
textarea.selectionEnd = caretPos;
textarea.focus();
textarea.scrollTop = scrollPos;
}
// Update the saved userCode every time the user updates the text area code
textarea.onkeyup = () => {
// We only want to save the state when the user code is being shown,
// not the solution, so that solution is not saved over the user code
if (solution.value === "è§£çã表示") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
}
updateCode();
};
ã¢ã¯ãã£ãã©ã¼ãã³ã°: ã²ã¹ããªã¹ãã¸ã®è¨å
¥
ãã®æ¼ç¿ã§ã¯ãé åã«æ ¼ç´ãããååã®ãªã¹ãããã²ã¹ããªã¹ãã«ãã¦ããã ãã¾ãããããããã£ã«ã¨ãã¼ã©ã¯è²ªæ¬²ã§ç¡ç¤¼ã§ããã¤ãæçãå ¨é¨é£ã¹ã¦ãã¾ãã®ã§ãã²ã¹ãã«å ¥ãããããã¾ããï¼ç§ãã¡ã¯ 2 ã¤ã®ãªã¹ããç¨æãã¾ããã1 ã¤ã¯ã²ã¹ããèªããããã®ãªã¹ãããã 1 ã¤ã¯ã²ã¹ããæå¦ããããã®ãªã¹ãã§ãã
å ·ä½çã«ã¯ã次ã®ãããªãã¨ããã¦ããã ãã¾ãã
people
é
åã®é·ãã¾ã§å復ããã«ã¼ãã使ãã¾ããrefused
段è½ã® textContent
ã®æå¾ã«é
åé
ç®ãé£çµãããã®å¾ã«ã«ã³ãã¨ã¹ãã¼ã¹ãç¶ãã¾ãadmitted
段è½ã® textContent
ã®æ«å°¾ã«é£çµãããã®å¾ã«ã«ã³ãã¨ã¹ãã¼ã¹ãç¶ãã¾ãæ¢ã«æä¾ããã¦ãããã®ã¯æ¬¡ã®ãã®ã§ãã
refused.textContent +=
â refused.textContent
ã®å¾ã«æåãé£çµããéå§è¡admitted.textContent +=
â admitted.textContent
ã®å¾ã«æåãé£çµããéå§è¡ç¹å¥ãã¼ãã¹åé¡ â ä¸ã®ã¿ã¹ã¯ãæ£å¸¸ã«å®äºããã¨ãã«ã³ãã§åºåããã 2 ã¤ã®ååãªã¹ããæ®ããã¾ããããããã¯æ´é ããã¾ãããããããã®æ«å°¾ã«ã«ã³ããããã¾ãã ããããã®å ´åã«æå¾ã®ã«ã³ããåãåããæ«å°¾ã«ããªãªãã追å ããè¡ãã©ã®ããã«æ¸ããã¨ããåé¡ãè§£æ±ºåºæ¥ã¾ããï¼ ãã«ãã®ãã便å©ãªæååã¡ã½ããã®è¨äºãè¦ã¦ã¿ã¦ãã ããã
ééããå ´åã¯ãããªã»ããããã¿ã³ã使ç¨ãã¦ãã®ä¾ããã¤ã§ããªã»ããã§ãã¾ããããªããæ¬å½ã«ç«ã¡å¾çãããã"ã½ãªã¥ã¼ã·ã§ã³ã表示"ãæ¼ãã¦è§£æ±ºçãè¦ã¦ãã ããã
<h2>ã©ã¤ãåºå</h2>
<div class="output" style="height: 100px;overflow: auto;">
<p class="admitted">Admit:</p>
<p class="refused">Refuse:</p>
</div>
<h2>ç·¨éå¯è½ãªã³ã¼ã</h2>
<p class="a11y-label">
Esc ãæ¼ãã¨ãã³ã¼ãé åãããã©ã¼ã«ã¹ãå¤ããã¨ãã§ãã¾ãï¼Tab ã¯ã¿ãæåãæ¿å
¥ãã¾ãï¼ã
</p>
<textarea id="code" class="playable-code" style="height: 400px;width: 95%">
const people = ['Chris', 'Anne', 'Colin', 'Terri', 'Phil', 'Lola', 'Sam', 'Kay', 'Bruce'];
const admitted = document.querySelector('.admitted');
const refused = document.querySelector('.refused');
admitted.textContent = 'Admit: ';
refused.textContent = 'Refuse: ';
// loop starts here
// refused.textContent += ;
// admitted.textContent += ;
</textarea>
<div class="playable-buttons">
<input id="reset" type="button" value="ãªã»ãã" />
<input id="solution" type="button" value="è§£çã表示" />
</div>
html {
font-family: sans-serif;
}
h2 {
font-size: 16px;
}
.a11y-label {
margin: 0;
text-align: right;
font-size: 0.7rem;
width: 98%;
}
body {
margin: 10px;
background: #f5f9fa;
}
const textarea = document.getElementById("code");
const reset = document.getElementById("reset");
const solution = document.getElementById("solution");
let code = textarea.value;
let userEntry = textarea.value;
function updateCode() {
eval(textarea.value);
}
reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
solution.value = "è§£çã表示";
updateCode();
});
solution.addEventListener("click", function () {
if (solution.value === "è§£çã表示") {
textarea.value = solutionEntry;
solution.value = "è§£çãé ã";
} else {
textarea.value = userEntry;
solution.value = "è§£çã表示";
}
updateCode();
});
const jsSolution = `
const people = ['Chris', 'Anne', 'Colin', 'Terri', 'Phil', 'Lola', 'Sam', 'Kay', 'Bruce'];
const admitted = document.querySelector('.admitted');
const refused = document.querySelector('.refused');
admitted.textContent = 'Admit: ';
refused.textContent = 'Refuse: ';
for (const person of people) {
if (person === 'Phil' || person === 'Lola') {
refused.textContent += \`\${person}, \`;
} else {
admitted.textContent += \`\${person}, \`;
}
}
refused.textContent = refused.textContent.slice(0,refused.textContent.length-2) + '.';
admitted.textContent = admitted.textContent.slice(0,admitted.textContent.length-2) + '.';`;
let solutionEntry = jsSolution;
textarea.addEventListener("input", updateCode);
window.addEventListener("load", updateCode);
// stop tab key tabbing out of textarea and
// make it write a tab at the caret position instead
textarea.onkeydown = function (e) {
if (e.code === "Tab") {
e.preventDefault();
insertAtCaret("\t");
}
if (e.code === "Escape") {
textarea.blur();
}
};
function insertAtCaret(text) {
const scrollPos = textarea.scrollTop;
let caretPos = textarea.selectionStart;
const front = textarea.value.substring(0, caretPos);
const back = textarea.value.substring(
textarea.selectionEnd,
textarea.value.length,
);
textarea.value = front + text + back;
caretPos += text.length;
textarea.selectionStart = caretPos;
textarea.selectionEnd = caretPos;
textarea.focus();
textarea.scrollTop = scrollPos;
}
// Update the saved userCode every time the user updates the text area code
textarea.onkeyup = () => {
// We only want to save the state when the user code is being shown,
// not the solution, so that solution is not saved over the user code
if (solution.value === "è§£çã表示") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
}
updateCode();
};
ã©ã®ç¨®é¡ã®ã«ã¼ãã使ç¨ããã®ã
é
åããããæ±ããªãã¸ã§ã¯ããå復å¦çããåé
ç®ã®æ·»åã®ä½ç½®ã«ã¢ã¯ã»ã¹ããå¿
è¦ããªãå ´åã¯ãfor...of
ãæè¯ã®é¸æã¨ãªãã¾ããèªã¿ãããããééããã¨ãå°ãªãããã§ãã
ãã®ä»ã®ç¨éã§ã¯ãfor
ãwhile
ãdo...while
ã®ã«ã¼ãã¯ã»ã¨ãã©äºææ§ãããã¾ãã ãããã¯ãã¹ã¦åãåé¡ã解決ããããã«ä½¿ããã¨ãã§ããã©ãã使ããã¯å人çãªå¥½ã¿ãã¤ã¾ãè¦ãããããç´æçãã«ãã£ã¦å¤§ããå¤ãã£ã¦ãã¾ãã å°ãªãã¨ãæå㯠for
ããå§ããã¾ããåæåå¦çãæ¡ä»¶ãæå¾ã®å¼ããã¹ã¦æ¬å¼§ã®ä¸ã«ãã¡ãã¨å
¥ãã®ã§ãã©ãã«ä½ãããã®ãããããããããè¦è½ã¨ãããªããããã§ãã¯ããããããã§ãã
ã§ã¯ãããä¸åº¦è¦ã¦ã¿ã¾ãããã
ã¾ã㯠for...of
ã§ãã
for (const é
ç® of é
å) {
// å®è¡ããã³ã¼ã
}
for
ã§ãã
for (åæåå¦ç; æ¡ä»¶; æå¾ã®å¼) {
// å®è¡ããã³ã¼ã
}
while
ã§ãã
åæåå¦ç
while (æ¡ä»¶) {
// å®è¡ããã³ã¼ã
æå¾ã®å¼
}
ããã¦æå¾ã¯ do...while
ã§ãã
åæåå¦ç
do {
// å®è¡ããã³ã¼ã
æå¾ã®å¼
} while (æ¡ä»¶)
ã¡ã¢: é«åº¦ãª/ç¹æ®ãªç¶æ³ããã®è¨äºã®ç¯å²ãè¶ ãã¦æç¨ãªãä»ã®ã«ã¼ãã¿ã¤ã/æ©è½ãããã¾ããã«ã¼ãå¦ç¿ãããã«é²ãããå ´åã¯ãé«åº¦ãªã«ã¼ãã¨å復å¦çã¬ã¤ãããèªã¿ãã ããã
ã¹ãã«ãã¹ããã®è¨äºã®æå¾ã«éãã¾ããããæã大åãªæ å ±ãè¦ãã¦ãã¾ããï¼æ¬¡ã«é²ãåã«ããã®æ å ±ã身ã«ä»ãããã©ããã確èªãããã¹ããããã¾ããã¹ãã«ãã¹ã: ã«ã¼ããè¦ã¦ãã ããã
ã¾ã¨ããã®è¨äºã§ã¯ãèå¾ã«ããåºæ¬çãªæ¦å¿µã¨ãJavaScript ã§ã³ã¼ããã«ã¼ãããéã«ä½¿ç¨ã§ãããã¾ãã¾ãªãªãã·ã§ã³ã«ã¤ãã¦èª¬æãã¾ããã ã«ã¼ããç¹°ãè¿ãã®å¤ãã³ã¼ããå¦çããã®ã«é©ããã¡ã«ããºã ã§ãããã¨ãçè§£ããèªåã®ä¾ã§ã«ã¼ããä½¿ãæ°ã«ãªã£ãã¯ãã§ãã
次ã«ã颿°ãè¦ã¦ããã¾ãã
é¢é£æ å ±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