PHPは配列も連想配列も同じものを指します。
(余談ですがPHP7系では速度の為に、内部的なロジックをいじっています。その結果、配列としての使い方をしている箇所ではメモリ空間上でシンプルな配列にする機能を盛り込んでいますが、コードや仕様上で区別されるわけではありません。超早口)
なのでarray_search関数等を連想配列・配列を気にせず使って探しにいっても問題ありません。
しかし、JavaScriptは連想配列的な役割を果たす汎用オブジェクトは、配列とは明確に区別されます。
配列はArrayオブジェクトのインスタンスですのでfind等のメソッドを呼び出せますが、
汎用オブジェクトにはfind等のメソッドは無いので使えません。
したがって、質問への回答は「出来ません」になります。
まぁ実務では出来ませんは通用しないので、
何とか工夫しましょうね。
工夫の仕方は下記2パターンのいずれかになります。
- 可変のキーはやめて、オブジェクトの配列で留める事を徹底
- Object.entries等を用いて汎用オブジェクトを配列に加工してからfindメソッドにアクセス
コード量が減り、シンプルに良い実装になるのが上のプランです。
シンプルで加工しやすいデータを所持しておくというのはとても重要なので、
是非そちらで運用しましょう。
js
1let hoge = {
2 piyo: [
3 {id:"hoge", name:"ホゲ", fuga:{id:1}},
4 {id:"fuga", name:"フガ", fuga:{id:2}},
5 ],
6}
7
8const id = hoge.piyo.find(it => it.id == "hoge").fuga.id;
9console.log(1);
10// 1
11
12let fuga=[
13 {
14 value:1,
15 label:"男"
16 },
17 {
18 value:2,
19 label:"女",
20 }
21]
22
23console.log(fuga.find(it => it.value == id));
24// {value: 1, label: "男"}
まぁ、下の方は最後の手段です。
元々のシステムに組み込む場合は綺麗事だけでは解決出来ませんからね。
fuga.piyo
の所をObject.entriesやObject.valuesで包んだ値を一時的に用意居しておいてそれを使うだけなので割愛。
この方針のどちらかで進めてみてください。