[過去ログ]
JavaScript の質問用スレッド vol.125 (1002レス)
JavaScript の質問用スレッド vol.125 http://mevius.5ch.net/test/read.cgi/tech/1659855460/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
32: デフォルトの名無しさん (スップ Sd03-PAk+ [1.66.101.132]) [] 2022/08/21(日) 10:31:51.96 ID:3ESrn3ezd >>31 先に存在しているとか先に実装されている(?)というようなイメージです http://mevius.5ch.net/test/read.cgi/tech/1659855460/32
33: デフォルトの名無しさん (ワッチョイ a37c-QAb4 [221.241.223.58]) [sage] 2022/08/21(日) 10:42:02.01 ID:KqCcLvyW0 >>30 定義が無限循環してると言いたいんだろうけど広辞苑にだってそういうのはあるし、関数ノットイコールメソッドと考えれば矛盾はしてない たぶんオブジェクトが先だろうけどね http://mevius.5ch.net/test/read.cgi/tech/1659855460/33
34: デフォルトの名無しさん (スップ Sd43-PAk+ [49.97.98.169]) [] 2022/08/21(日) 11:25:21.77 ID:df/SIE01d >>33 ありがとうございます もう少し調べてみると、 https://tc39.es/ecma262/multipage/overview.html#sec-ecmascript-overview でTerms and Definitionsのところに、関数はオブジェクトであってプロパティの他に実行可能なコードと状態を持つもの、という感じのことが書かれてて、メソッドはオブジェクトのプロパティの値である関数のことと書かれていました こちらの説明で一旦納得できました http://mevius.5ch.net/test/read.cgi/tech/1659855460/34
35: デフォルトの名無しさん (アウアウウー Sad9-dbST [106.181.223.3]) [] 2022/08/21(日) 11:46:37.18 ID:j3ukytx2a v8のソースでも読んでみれば http://mevius.5ch.net/test/read.cgi/tech/1659855460/35
36: デフォルトの名無しさん (ブーイモ MM8b-mKyu [133.159.148.135]) [sage] 2022/08/21(日) 12:32:17.30 ID:IBDK1msSM オブジェクトが先 オブジェクトはプロパティのコレクション プロパティとはkey/valueのペアのこと keyはStringでvalueはプリミティブかオブジェクト http://mevius.5ch.net/test/read.cgi/tech/1659855460/36
37: デフォルトの名無しさん (ブーイモ MM8b-mKyu [133.159.149.74]) [sage] 2022/08/21(日) 12:39:55.73 ID:ZOLz03eMM オブジェクトを定義するのにオブジェクトを使ったりStringという別のオブジェクト使えるの? と疑問に思うのかもしれないけど 定義が存在する(名前解決可能である)ことを確認するフェーズと 定義の中身を検証するフェーズを分けることで可能 foo関数の中でbar関数を呼び出しつつ bar関数の中でfoo関数を呼び出すような関数定義ができるのと同じこと http://mevius.5ch.net/test/read.cgi/tech/1659855460/37
38: デフォルトの名無しさん (ワッチョイ d501-dbST [60.87.221.16]) [sage] 2022/08/21(日) 15:06:45.69 ID:D11cwWL50 >>32 「実装」というが、「仕様」上で両方とも存在しているなら、同時に「実装」されるのでは? >>34 ES3には「オブジェクト」の定義はあるが、「関数」の定義はない 故に「歴史的にはオブジェクトが先に定義された」といえなくもないが、そんな回答を望んでいるようにも見えない http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/4_Overview.html#section-4.2.1 参考になるかわからないが、typeof演算子は「[[Call]] を持つObject型」の場合に "function" を返す https://262.ecma-international.org/13.0/#sec-typeof-operator http://mevius.5ch.net/test/read.cgi/tech/1659855460/38
39: デフォルトの名無しさん (スップ Sdc3-JVFl [1.72.7.185]) [sage] 2022/09/02(金) 16:08:14.77 ID:anBQQFEld ブックマークレットのスレッドかこちらか悩みましたが質問なのでこちらでご相談させていただきます。 他者のWebサイトを閲覧する際、JavaScriptを用いて作成されている場合、リンクを新しいタブで開けない場面があります。 頻繁にページを進んだり戻ったりする場面、可能であればリンク先を別タブで開くようにしたいです。 ブックマークレットを用いて、現在ページのJavaScriptのリンクを別タブで開くように書き換える処理をすることは可能でしょうか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/39
40: デフォルトの名無しさん (ワッチョイ a3b7-83Bc [211.124.165.35]) [sage] 2022/09/02(金) 16:38:05.47 ID:avuNeQJi0 >>39 そのサイト次第かな クリックした後の画面を一発で開けるURLが用意されてたら基本的に実装できると思う http://mevius.5ch.net/test/read.cgi/tech/1659855460/40
41: デフォルトの名無しさん (ワッチョイ a52d-bBdM [220.100.64.9]) [sage] 2022/09/03(土) 00:11:31.61 ID:8AM/s+hA0 連想配列から特定のキーを検索して、重複がないもののみ取り出した配列を取得したいのですが、 このコードだと速度的に問題がありました。何か良い方法があったら教えていただけないでしょうか const a= [ {'id': 1, 'category': 'animal', 'kind': 'dog'}, {'id': 2, 'category': 'fruit', 'kind': 'apple'}, {'id': 3, 'category': 'fruit', 'kind': 'orange'}, {'id': 4, 'category': 'animal', 'kind': 'dog'}, {'id': 5, 'category': 'animal', 'kind': 'cat'}, {'id': 6, 'category': 'fruit', 'kind': 'grape'}, ] var b=a.filter((x,y,z)=>z.slice(0,z.length).filter(w=>w.kind==x.kind).length==1); console.log(b); http://mevius.5ch.net/test/read.cgi/tech/1659855460/41
42: デフォルトの名無しさん (ワッチョイ ad5f-wuTS [106.185.148.64]) [sage] 2022/09/03(土) 02:15:20.35 ID:Wm/0iruN0 >>41 const buckets = a.reduce((buckets, current) => { if (!buckets[current.kind]) { buckets[current.kind] = [current]; } else { buckets[current.kind].push(current); } return buckets; }, {}); const b = Object.values(buckets) .filter((items) => items.length === 1) .flat(); 速度は測ってないけどたぶんO(n^2)→O(n)になって速いはず http://mevius.5ch.net/test/read.cgi/tech/1659855460/42
43: デフォルトの名無しさん (スプッッ Sd03-5GnA [1.75.244.51]) [sage] 2022/09/03(土) 03:34:12.57 ID:E5gjC2rTd Mapで似たようなこと考えてた http://mevius.5ch.net/test/read.cgi/tech/1659855460/43
44: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:05:53.47 ID:RJZpwhgn0 >>41 要素数や重複要素のばらつき具合によって結果は変わるが、最終的には力業が最速な事が多い https://jsfiddle.net/gft5ah0n/ 極端な結果になっているのは重複要素がすぐそばにあり、while文による検索ですぐに見つかる為だ 重複要素が遠い位置にあるなら、while文による検索が遅くなるケースも十分にある >>41のコードが比較的高速なのも重複要素が比較的近くにある為だ Object.valuesやArray#filterによる変換コストが検索コストより高くついているので、他のコードが比較的遅い 重複検知が頻繁に発生するようであれば、データのも持ち方を new Map や new Set を使うように変更した方がいい 配列はユニークな値を得るのに向いていない http://mevius.5ch.net/test/read.cgi/tech/1659855460/44
45: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:08:20.30 ID:RJZpwhgn0 >>44の補足 jsfiddleのconsoleはconsole.time()を実装していないようだ ベンチマーク結果はブラウザのコンソールで確認する必要がある http://mevius.5ch.net/test/read.cgi/tech/1659855460/45
46: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:28:11.32 ID:RJZpwhgn0 すまん >>44のwhile_loopは期待通りに動かないので忘れてほしい(console.assert()のコードをミスって気づかなかった) 重複要素のばらつき具合によるが、(>>41の配列においては)暫定最速は>>41 http://mevius.5ch.net/test/read.cgi/tech/1659855460/46
47: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:46:53.92 ID:RJZpwhgn0 >>46 console.assert()の修正、重複チェックをkindのみに修正したら、mapが最速になった https://jsfiddle.net/bw8z2acf/ http://mevius.5ch.net/test/read.cgi/tech/1659855460/47
48: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 11:16:26.73 ID:RJZpwhgn0 >>47 高速化で考えるべきは「ループ回数の削減」と「変換回数の削減」 >>41 source >>42 reduce >>47 map reduceはループ回数は削減されているが、変換回数がsourceよりも多い 要素数6では「変換コスト > 検索コスト」になってしまい、sourceよりも遅い 要素数192では「変換コスト < 検索コスト」となるので、sourceよりも速い mapの変換回数は2回で Array.from() と results.values() のみ ループ回数、変換回数ともにsource,reduceよりも少ない 要素数6、要素数192のいずれも map が最速となる 実際のところ、変換を一度も発生させないコードが理想となる データの持ち方として配列(new Array)であるべきなのか、はよく考えた方がいい http://mevius.5ch.net/test/read.cgi/tech/1659855460/48
49: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 11:42:14.57 ID:RJZpwhgn0 >>39 a要素でマークアップされているなら、難しくはない for (let a of document.querySelectorAll('a[href]')) a.target = '_blank'; window.open()などでリンクを開く挙動もJavaScriptで制御しているなら、コードを読んでリンク先を得る手段を考える必要がある http://mevius.5ch.net/test/read.cgi/tech/1659855460/49
50: デフォルトの名無しさん (ワッチョイ 9534-9i1j [14.14.181.44]) [sage] 2022/09/04(日) 09:22:10.61 ID:eAq4eNQY0 >>40 >>49 ありがとうございます。 テーブルの表示となっていて、行全体にリンクが設定されているようです。 以下のような記載が複数並んでおり、通常は左クリックでリンク先に移動しかできず、新しいタブで開くことができません。 <tr class=”〇〇〇” data-href=”★リンク先アドレス★” data-target=”〇〇〇”> <td class=”〇〇〇”></td> <td class=”〇〇〇”></td> </tr> 素人ながらいくつかブックマークレットで試したのですが、逆に実行するとリンクが無効になる事が多々でした。 アドバイスをいただければ幸いです。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/50
51: デフォルトの名無しさん (ワッチョイ d510-bEl6 [180.12.82.129]) [] 2022/09/04(日) 12:38:54.82 ID:FoFuUBY00 <div style="width:100%;height:200px;border:Solid 3px #0000ff" id="test"></div> これのcss初期設定を取得したいのでstyle="○○"の○○部分を抽出したいんだけどやり方がわかりません。 element.style.widthみたいに取得すると途中で値を書き換えられると初期設定が得られないので 最初にタグに埋め込んであるものを取得したいんです。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/51
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 951 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s