のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,543,431人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ+ JavaScript の質問用スレッド vol.142 +

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
601 : Name_Not - 2020/08/05(水) 14:28:27.01 ID:???.net (+27,+29,-8)
目的のものが自分でどういうものかわかっていないのに他人が作れるわけがない
602 : Name_Not - 2020/08/05(水) 14:36:59 ID:???.net (-18,-30,+0)
>>594 の答えが >>594 の予想通り合計点として、
var 下の配列 = [
{team: 'a', pt: 4},
{team: 'a', pt: 2},
{team: 'b', pt: 3},
{team: 'b', pt: 6},
{team: 'c', pt: 0},
{team: 'c', pt: 2},
];
// pt順に並べてからチームごとにまとめる
var result = Object.values(下の配列.sort((a, b) => b.pt - a.pt).reduce((acc, row) => {
acc[row.team] = [...(acc[row.team] || []), row];
return acc;
}, {}))
// チームを合計点数でソート
.sort((teamA, teamB) => teamB.reduce((acc, row) => acc + row.pt) - teamA.reduce((acc, row) => acc + row.pt))
// チームごとにまとめていたのを解除
.flat();
console.log(result);
// 結果↓
[
{team: "b", pt: 6},
{team: "b", pt: 3},
{team: "a", pt: 4},
{team: "a", pt: 2},
{team: "c", pt: 2},
{team: "c", pt: 0}
]
604 : Name_Not - 2020/08/05(水) 15:26:48.47 ID:???.net (-23,-30,-59)
否定演算子と共にトグルに使用出来る数値型はboolだけでしょうか?
function onclick(){
img.style.display = !img.style.display;
}
これでは反転しないようです。
別にboolを用意するでしょうか?
605 : Name_Not - 2020/08/05(水) 15:39:04.71 ID:???.net (+25,+29,-16)
めちゃくちゃな理解の仕方だなw
607 : Name_Not - 2020/08/05(水) 15:42:37.19 ID:???.net (+11,+21,+0)
>>604
これは酷い
608 : Name_Not - 2020/08/05(水) 15:43:35.12 ID:???.net (+10,+9,-16)
>>605
プロパティの数値は2つとは限りませんものね
610 : Name_Not - 2020/08/05(水) 16:15:36.00 ID:???.net (-27,-30,-87)
input要素にidがない場合、click()メソッドは使えないでしょうか?
getelementbytagnameでinput取得してもclickは使えないようです
612 : Name_Not - 2020/08/05(水) 16:40:19.07 ID:???.net (+23,+28,-27)
>>610
使えますよ
要素を指定する方法を学びましょう
616 : Name_Not - 2020/08/05(水) 17:14:53.90 ID:???.net (-15,-13,-29)
inputタグは一つしか設置していないですが、htmlcollectionから更に絞り込む必要があるでしょうか。
しかし絞り込む時にidなどの識別子がないといけないわけですよね。
619 : Name_Not - 2020/08/05(水) 17:17:43.34 ID:???.net (+19,+24,+0)
なるほど、配列になっているんですね。
620 : Name_Not - 2020/08/05(水) 18:03:47.42 ID:???.net (-5,-30,-70)
>>619
配列とはちと違うんだけどな

getElementsByTagName()

これよく見るとElementsって複数形になってるじゃろ
なので、該当する要素を詰め込んだコレクションていう
配列に似たオブジェクトで返ってくる

そんでもう書かれてるけど今となっては古いので
querySelectorか、querySelectorAll使う方がいい
621 : Name_Not - 2020/08/05(水) 18:07:48.35 ID:???.net (+27,+29,-49)

querySelectorAllの返り値は
コレクションではなくノードリストね

使い勝手はそれほど変わらんと思うけど
ノードリストは後発なだけに
持ってるメソッドが洗練されてる
623 : Name_Not - 2020/08/05(水) 18:20:02.18 ID:???.net (-25,-30,-56)
>>620
なっ、、、なんだってー!!?

> そんでもう書かれてるけど今となっては古いので
> querySelectorか、querySelectorAll使う方がいい

qiitaの要素取得を説明しているページだと

http://qiita.com/amamamaou/items/25e8b4e1b41c8d3211f4

querySelectorとquerySelectorAllは遅いと書かれてるんで出来るだけ使わないようにしてきたんだけどもどっちが正しいんだ……
624 : Name_Not - 2020/08/05(水) 18:26:29.75 ID:???.net (+27,+29,-8)
自己解決。ときと場合によりけりということか
625 : Name_Not - 2020/08/05(水) 19:14:00.14 ID:???.net (+28,+29,-44)
>>602
おおっ!ありがとうございます
回答頂いた「pt順に並べて…」のコード+flat();で大丈夫そうです
ただ、Array.reduceの所が難解すぎてなぜこの解になるのかわからないです
少し解説してもらえるとありがたいのですが
ググってヒットしたページをいくつか読んでもちんぷんかんぷんでした
626 : Name_Not - 2020/08/05(水) 20:35:49.01 ID:???.net (-29,-29,-43)
http://ideone.com/tUl75p
clickを使用して画像を消したいのですが、このコードの場合は上手く消えないです
しかしalertは動作します
何が原因かわかりませんか?
627 : Name_Not - 2020/08/05(水) 20:43:01.44 ID:???.net (+24,+29,-19)
>>623
なんで遅いと書かれたら使わないんだ?
628 : Name_Not - 2020/08/05(水) 20:47:27.82 ID:???.net (-28,-26,-26)
reduceはその機能を知ってる人でさえ書いてあるコードが読みにくなるもの
reduceはその他のアルゴリズムを実装するための基礎だと考えたほうが良い
629 : Name_Not - 2020/08/05(水) 20:50:53.23 ID:???.net (+3,+8,-14)
>>620
うそは言わないように
配列は配列
632 : Name_Not - 2020/08/05(水) 20:57:55.68 ID:???.net (+14,+10,-29)
>>629
うそは言わないように
配列風オブジェクトは配列ではない
633 : Name_Not - 2020/08/05(水) 21:02:34.72 ID:???.net (+24,+29,-3)
>>626
そのまま張り付けてみたけど消えるぞ?
http://jsfiddle.net/ho9uvj7x/
635 : Name_Not - 2020/08/05(水) 21:26:17.30 ID:???.net (-16,-10,-4)
>>626
トグル操作は標準機能を使った方が間違いが少ない
http://jsfiddle.net/gwqh87v6/
636 : Name_Not - 2020/08/05(水) 21:49:01.51 ID:???.net (-19,-30,+0)
>>625 そこは、以下3ステップを1つにまとめている。
// (A) pt順(降順)に並べる
var result = 下の配列.sort((a, b) => b.pt - a.pt); // ここまでの結果↓
[
{ team: "b", pt: 6 },
{ team: "a", pt: 4 },
{ team: "b", pt: 3 },
{ team: "a", pt: 2 },
{ team: "c", pt: 2 },
{ team: "c", pt: 0 }
]
// (B) テームごとにまとめる
result = result.reduce((acc, row) => {
acc[row.team] = [...(acc[row.team] || []), row];
return acc;
}, {}); // ここまでの結果↓
{
b: [
{ team: "b", pt: 6 },
{ team: "b", pt: 3 }
],
a: [
{ team: "a", pt: 4 },
{ team: "a", pt: 2 }
],
c: [
{ team: "c", pt: 2 },
{ team: "c", pt: 0 }
]
}
// (C) チームごとにまとめるために使っただけなので、キーを捨て値だけで(配列の)配列にする。
result = Object.values(result); // ここまでの結果…は改行制限が厳しいので省略。かつ次レスに続く
638 : Name_Not - 2020/08/05(水) 22:21:07.75 ID:???.net (+3,-1,-15)
>>632
配列は配列
Arrayのインスタンスだけが配列なわけではない
TypedArrayだってあるし
本質的に違わないものをあえてグループ分けする意味はなんだ?
639 : Name_Not - 2020/08/05(水) 22:36:05.45 ID:???.net (+30,+29,-60)
>>636,637
とりあえずArray.reduceの挙動はなんとかつかめました
後ろにあるデフォルト値の役割と最初の返値が空なことに気がつかないと意味不明ですねこれ…
ともあれ大変勉強になりました
手取り足取りどうもありがとうございました
640 : Name_Not - 2020/08/05(水) 22:44:16.17 ID:???.net (+31,+29,-160)
>>638
哲学の唯名論的には、説明や理解に便利だからだろう。
lengthプロパティとspliceメソッドがあれば配列、それ以外の配列っぽいのはarray-likeってのが実用的。

あれ?これなんでmapで失敗するの?
→配列じゃなくて配列風オブジェクトだからだよ

これで済む。
それに包み隠さず詳しく説明すべきだと言うなら、その説明は分類を進め詳細化の方向に進むはずで、どれもこれも配列だよ、のような統一化の方向には行かないだろう。
642 : Name_Not - 2020/08/05(水) 22:59:34.15 ID:???.net (-22,-29,-86)
>>640
その理屈では型付配列は配列ではないということ?

これなんでmapで失敗するの?
→mapメソッドを持っていないから
となるのが普通では?

そもそもmapって繰り返しラップするメソッドなんだから
別に配列だけに強く結びついてるものと考えるのは変でしょ

例えばその概念はイテレータにだって適応できるわけでそういう提案もあるし
http://github.com/tc39/proposal-iterator-helpers

Mapに増やそうっていう議論も昔っからよくされて来たでしょ
http://github.com/tc39/proposal-set-methods#semirelevant-previous-discussions
643 : Name_Not - 2020/08/05(水) 23:05:39.39 ID:???.net (+33,+30,-47)
これはなぜこう呼ぶのか、こう呼ばないのか
そんなことに理由はないし、そんなことを一々考えて呼んだりしないだろ
今までそう呼んできたからそう呼ぶというだけで
そこに理屈を持ち出すのは間違い
だれが何をどう呼ぼうが呼ぶまいが自由で
ここはそれを議論する場所ではない
644 : Name_Not - 2020/08/05(水) 23:07:41.08 ID:???.net (+27,+29,-27)
実用的には誤解を招く表現は避けるべきってところじゃないかな
あと生きてる奴を配列で括るのは流石にマズくね?
645 : Name_Not - 2020/08/05(水) 23:23:06 ID:???.net (-22,-20,-13)
いいわけがましいうそつきだな

JavaScriptではarrayとarray-like objectをなぜわざわざ区別してるのかを考えればすむこと
646 : Name_Not - 2020/08/05(水) 23:29:41 ID:???.net (+30,+29,-16)
そしてどうでもいい議論にこういう勘違い君が乱入して最初の話がわからなくなるまでがこのスレのいつもの流れ
誰もarrayとarray-like objectの話なんてしてないでしょーがw
647 : Name_Not - 2020/08/05(水) 23:39:21.51 ID:???.net (+21,+26,-13)
>>632がそのものだと思うが
649 : Name_Not - 2020/08/05(水) 23:47:04.30 ID:???.net (-26,-29,-115)
そもそも何がArrayかってことすら難しい
例えばArray.isArrayに頼ろうと思っても
そいつは内部メソッドしか見てないから
全くArrayの振る舞いをしないオブジェクトでもtrueと判定してしまう
逆にProxyでその内部メソッドをそっくり真似たオブジェクトを作って
振る舞い性質は完全にArrayとおなじでもisArrayはfalseなわけだし
650 : Name_Not - 2020/08/05(水) 23:53:13.19 ID:???.net (-27,-30,-37)
①番の考え方
Array ≡ 配列
Array Like → 配列のような(配列ではない)
Arrayではない → 配列ではない

②番の考え方
Array ∈ 配列
Array Like → Arrayのような(Arrayではない)
Arrayではない → 配列ではあるかもしれない
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について