以下の内容はhttps://var.blog.jp/archives/75246136.htmlより取得しました。



COMMENT

 コメント一覧 (4)

    • 2. 通りすがり
    • 2021/11/29 22:34
    • 方法1
      > タプルのような複数のデータをまとめたもので値が同じとみなす機能がないので 同じデータなら同じ値になる物を作ります

      とありますが

      const object_hash = new WeakMap()

      function toHash(value) {
      if (value instanceof Object) {
      if (object_hash.has(value)) {
      return object_hash.get(value)
      }
      const hash = "H" + Date.now() + Math.random().toString(16)
      object_hash.set(value, hash)
      return hash
      } else {
      return JSON.stringify(value)
      }
      }

      const map = new Map()

      function fn(a, b) {
      const key = [a, b].map(toHash).join(" ")
      if (map.has(key)) {
      return map.get(key)
      } else {
      const value = Math.random()
      map.set(key, value)
      return value
      }
      }

      console.log(fn("a", { b: 1 }));
      console.log(fn("a", { b: 1 }));

      を実行してみたところ、出力結果が下記のようなので、何をやりたいのかよくわかりません。

      0.4340078142669057
      0.7684165652958754
    • 3. ななしさん
    • 2021/11/29 22:36
    • エラーが出たので何度も投稿してしまいました。重複投稿すいません。
    • 4.    [管理人]
    • 2021/11/30 11:00
    • >>2
      {b: 1} を 2 回作ると異なる参照なので別のデータです

      {b: 1} を変数に入れてそれを使えば同じ値になるかと思います

      const value1 = {b: 1}
      console.log(fn("a", value1));
      console.log(fn("a", value1));

      0.14305216848429958
      0.14305216848429958
    • 5. ななしさん
    • 2021/12/02 20:18
    • 丁寧な回答ありがとうございました。納得しました。
      長文と重複コメントすいません。お手間でなければ削除して下さって結構です。



以上の内容はhttps://var.blog.jp/archives/75246136.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14