var path = require("path");
var fs = require("fs");
// ◆文字列から"b"の文字が最初に現れる位置(先頭が0)を得る
a = "orange melon strawberry grape";
n = a.indexOf("b");
// 18
console.log(n);
// ◆その位置から5文字を切り出す
b = a.substring(n, n+5);
// berry
console.log(b);
// ◆文字列の一部置き換え
console.log(a.replace("mel", "lem"));
// ◆数値と文字列をそれぞれ加算、文字列連結する
// Java(BeanShell)同様、+は片方が文字列だとデフォルトで文字列演算になる
// またparseDoubleという関数はない。parseFloatはある
v1 = 10.2;
v2 = "15.3";
// 25.5 10.215.3 25.5 15.310.2
v3 = v1 + parseFloat(v2);
v4 = v1 + v2;
v5 = parseFloat(v2) + v1;
v6 = v2 + v1;
console.log(`${v3} ${v4} ${v5} ${v6}`);
// ◆配列の3番目の要素から3個を取り出し、文字列に連結して出力する
arr = ["orange", "melon", "strawberry", "grape", "apple", "banana"];
arrsub = arr.slice(2, 2+3);
// joinはJavaScriptのこれが一番普通だと思うけれどこの記法の言語は意外に少ない
// strawberry graph apple
console.log(arrsub.join(" "));
// ◆要素の追加。addではないので注意。appendでもない
arr.push("peach");
// ◆要素の検索
console.log("index of 'peach' is:" + arr.indexOf("peach").toString());
// ◆配列要素を変数に一括代入する
// ES6から以下の記法が可能
let [e1, e2, e3] = arrsub
console.log(`${e1} ${e2} ${e3}`);
// 連想配列の初期化方法はPythonの辞書と同じ
harr = { "orange" : 80, "melon" : 1200, "strawberry" : 350 };
harr["grape"] = 450;
// ◆配列キーの存在有無をチェックする
// yes
console.log(("melon" in harr) ? "yes" : "no");
// no
console.log(("lemon" in harr) ? "yes" : "no");
// ◆配列キー一覧をソートして、キーと値を出力する
keys = Object.keys(harr);
keys.sort();
for(k of keys){ console.log(`${k}\t${harr[k]}`); }
// ◆既定値付き引数を持つ関数の定義。PHP/Python/PSなどと同じ
function getFileNames(dir, ext = ""){
names = [];
fs.readdirSync(dir).forEach(fname => {
if(ext == "" || fname.endsWith(ext)){ names.push(fname); }
});
return names;
}
console.log(getFileNames(".").join(" "));
console.log(getFileNames(".", ".txt").join(" "));
// ◆可変個数の引数を持つ関数を定義する
// JavaScriptでは組込変数argumentsで引数の一覧を取得できる
function getSum(){
sum = 0;
for(v of arguments){ sum += v; }
return sum;
}
// 46
console.log(getSum(10,11,12,13));
// end.