B-Teck!

お仕事からゲームまで幅広く

【JavaScript】文字列の空白埋め、0埋め

以前Javaで同じようなことやってるけど、JavaScriptもメモしておく。
http://beatdjam.hatenablog.com/entry/2017/07/21/225053

function padding(str,num,pad){
    if(pad === void(0)) pad = 0;
    return (Array(num + 1).join(pad)+str).slice(num*-1);
}

console.log(padding("1",3,"x"));
// xx1
console.log(padding("1",2));
// 01

先頭の文字列除去はこれでいけそう
正規表現で行頭の指定文字の繰り返しを削除する。

function suppress( sup,str ) {
    return str.replace(new RegExp("^"+sup+"*"),"");
}
console.log(suppress(0,"002351"));
// 2351
console.log(suppress("x","xxyzabc"));
// yzabc

【JavaScript】指定した文字列を繰り返した新しい文字列を生成する

ES6が使える環境ならこれでOK。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/repeat

console.log("test".repeat(3));
// testtesttest

ES6が使えない環境なら、先述したMozillaのサイトのpolyfillを利用するか、
エラー等を考慮しないなら下記のような方法で実現できる。

const repeat=(str,num)=>{
  return Array(num+1).join(str);
}
console.log(repeat("test", 3));

repeat関数はちょっと面白いことをしていて、
指定の数の空要素を持った配列を生成して繰り返したい文字列でjoinすると、
空要素を繰り返したい文字列で結合したことになって結果的に繰り返し文字列が得られると言う処理。
すげー発想だと思う。

https://stackoverflow.com/questions/1877475/repeat-character-n-times/1877479#1877479

【Javascript】連想配列の値やキーに特定の値が存在するか調べる

var Country= {
  "Japan": "日本",
  "China": "中国",
  "Korea": "韓国",
  "Vietnam": "越南"
};

function getHashProperties(a){
  let r = [];
  for(let v in a){
    if(a.hasOwnProperty(v))
      r.push(a[v]);
  }
  return r;
}

// 入力したオブジェクトのプロパティの値を配列に展開する
// -> Array [ "日本", "中国", "韓国", "越南" ]
console.log(getHashProperties(Country));

// includesで戻り値配列の中に値が存在するかを確認できる
// -> true
// -> false
console.log(getHashProperties(Country).includes('日本'));
console.log(getHashProperties(Country).includes('Japan'));

// indexOfでも当然判定できる
// -> 3
// -> -1
console.log(getHashProperties(Country).indexOf('越南'));
console.log(getHashProperties(Country).indexOf('Vietnam'));

// 特定の名前のプロパティが存在するかは下記で判断できる
console.log(('China' in Country));
console.log(('韓国' in Country));