インスタンスが同じであるか調べたいです。
アドレスではないのですがpythonでいうid関数みたいなのはあるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
アドレスではないのですがpythonでいうid関数みたいなのはあるのでしょうか?
私の知る限りでは、JavaScript(ECMAScript)に同一の機能はありません。
id(object)
オブジェクトの "識別値" を返します。この値は整数で、このオブジェクトの有効期間中は一意かつ定数であることが保証されています。有効期間が重ならない 2 つのオブジェクトは同じ id() 値を持つかもしれません。
idをkeyとみなすとして、全てのオブジェクトを配列に格納すれば、index値がidの扱いになります。
javascript
1const array1 = new Array; 2const array2 = new Array; 3const array3 = new Array; 4const AllObjectList = [array1, array2, array3]; 5 6console.log(AllObjectList.indexOf(array2)); // 1
オブジェクト初期化処理を独自関数でラップすれば、Pythonのid関数相を実装出来そうです。
比較演算子や関数で同一判定することは可能です。
javascript
1const array1 = new Array; 2const array2 = array1; 3 4console.log(array1 === array2); // true 5console.log(Object.is(array1, array2)); // true
Re: a.com さん
投稿2022/08/12 02:32
総合スコア18166
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
WeakMap
を使えば、自分でオブジェクトに対して一意な値を割り当てることは可能です。
javascript
1let id = 1; 2const map = new WeakMap; 3 4const getId = obj => { 5 const current = map.get(obj); 6 if(current) return current; 7 const newValue = id++; 8 map.set(obj, newValue); 9 return newValue; 10};
投稿2022/08/11 04:55
総合スコア145201
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。