2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptでランダムな13桁のJANコードを生成する方法

Posted at

検索しても、あまり良さそうなサイトが見つけられなかったため、こちらのサイトの「GTIN(JANコード)標準タイプ(13桁)のチェックデジットの計算方法」を参考に作成しました。

コード

const createFakeJanCode = () => {
  // 12桁のランダムな数字の文字列を生成
  const randomString = Math.random().toString(10).slice(-12);

  // ランダムな数字の配列
  const numberArray = [...randomString].map(Number);

  // 奇数番目の要素の合計①
  const oddSum = numberArray
    .filter((_, index) => index % 2 === 1)
    .reduce((sum, nextValue) => sum + nextValue);

  // 偶数番目の要素の合計②
  const evenSum = numberArray
    .filter((_, index) => index % 2 === 0)
    .reduce((sum, nextValue) => sum + nextValue);

  // ①x3+②の数の一桁目
  const firstDigit = +`${oddSum * 3 + evenSum}`.slice(-1);

  // 10を引いた数の一桁目がチェックデジットとなる
  const checkDigit = `${10 - firstDigit}`.slice(-1);

  return `${randomString}${checkDigit}`;
};

const fakeJanCode = createFakeJanCode();
// (例)4022583207511

注意点ですが、参考サイトで

① すべての偶数桁の数字を加算します。
② ①の結果を3倍します。

とあり、ついついindex % 2 === 0で求めたくなりますが、配列のfilterメソッドのindex0から始まるため、奇数番目の合計を3倍する必要があります。

参考サイト

最後に

GoQSystemでは一緒に働いてくれる仲間を募集中です!

ご興味がある方は以下リンクよりご確認ください。

2
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?