暇つぶし2chat HP
- 暇つぶし2ch2: HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。 (8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。 (9) ライブラリ関連の話題は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。 (10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。



3:Name_Not_Found
15/04/24 20:01:52.39 .net
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 URLリンク(jsdo.it) URLリンク(jsbin.com) URLリンク(jsfiddle.net) URLリンク(ideone.com)
■前スレ
+ JavaScript の質問用スレッド vol.123 + [転載禁止]©2ch.net
スレリンク(hp板)
■過去スレ全集
URLリンク(www2.atpages.jp)
URLリンク(usamimi.info) (閲覧のみ)
■テンプレ案
URLリンク(fiddle.jshell.net)
■関連スレ
ECMAScript デス 4
スレリンク(tech板)
JavaScript ライブラリ総合質問所 vol.4
スレリンク(hp板)
CSS初心者スレッド=13th=©2ch.net
スレリンク(hp板)
Canvasについて語ろう
スレリンク(hp板)

4:Name_Not_Found
15/04/24 20:03:06.10 .net
■FAQ
URLリンク(fiddle.jshell.net)
■開発者ツール(Developer Tools)の基本的な使い方 (全部は URLリンク(fiddle.jshell.net) )
◆諸注意
- 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
- IE9- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません)
- Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。
  URLリンク(developer.apple.com)
◆要素を検証
1. ページ上で右クリックして [要素を検証]
2. [Elements] パネルが開き、対象のDOMノードが選択される(選択対象が目的の要素でなければ [Elements] パネル上で選択し直す)
3. 右側のサイドバーから知りたいステータス名のタブを選択する
  - [Styles] タブ … CSSプロパティの指定値を表示 (※カスケードによって上書きされたプロパティは取り消し線で表示される)
  - [Computed] タブ … CSSプロパティの算出値を表示("font-size: 1em" を指定していても算出後の "*px" で表示される)
  - [Properties] タブ … 選択したDOMノードのプロパティを表示
◆コンソール
1. JavaScript コード上で console.log('Hello, World!'); と入力
2. [Ctrl] + [Shift] + [I] キー(IE は [F12])で開発者ツールを開き、[Console] パネルを開く
3. [Console] パネルに "Hello, World!" と表示される
(※window.alert() は String 型に変換されますが、console.log() は Object 型の中身をそのまま表示してくれます。)

5:Name_Not_Found
15/04/24 20:04:03.11 .net
■各種仕様 ( URLリンク(fiddle.jshell.net) も参照 )
◆ Standard ECMA-262
URLリンク(bclary.com) (ECMAScript 3 HTML版)
URLリンク(web.archive.org)URLリンク(www2u.biglobe.ne.jp) (ECMAScript 3 和訳)
URLリンク(www.ecma-international.org) (ECMAScript 5.1 HTML版)
URLリンク(tsofthome.appspot.com) (ECMAScript 5.1 和訳)
URLリンク(people.mozilla.org) (ECMAScript 6 有志HTML版)
URLリンク(kangax.github.io) (ECMAScript 5 compatibility table)
URLリンク(kangax.github.io) (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
URLリンク(www.whatwg.org)
URLリンク(momdo.s35.xrea.com) (HTML5.1 部分訳)
URLリンク(www.hcn.zaq.ne.jp) (Web Storage 和訳)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
URLリンク(www.hcn.zaq.ne.jp) (DOM Standard (DOM4) 和訳)
URLリンク(www.w3.org) (DOM3 Events)
URLリンク(www.w3.org) (UI Events)
URLリンク(www.hcn.zaq.ne.jp) (CSSOM 和訳)
URLリンク(www.hcn.zaq.ne.jp) (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
URLリンク(domparsing.spec.whatwg.org) (DOM Parsing and Serialization - innerHTML等)
URLリンク(www.hcn.zaq.ne.jp) (XMLHttpRequest 和訳)
URLリンク(www.hcn.zaq.ne.jp) (File API 和訳)
URLリンク(www.whatwg.org) (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
URLリンク(developer.mozilla.org)
◆ MSDN Library
URLリンク(msdn.microsoft.com) (Internet Explorer API)
URLリンク(msdn.microsoft.com) (JavaScript)
URLリンク(msdn.microsoft.com) (JScript)
URLリンク(msdn.microsoft.com) (DHTML)

6:Name_Not_Found
15/04/24 20:04:45.74 .net
■JavaScript主要ライブラリ・フレームワーク
jQuery
URLリンク(jquery.com)
jQuery UI
URLリンク(jqueryui.com)
jQuery Mobile
URLリンク(jquerymobile.com)
Lo-Dash
URLリンク(lodash.com)
Backbone.js
URLリンク(backbonejs.org)
Underscore.js
URLリンク(underscorejs.org)
AngularJS
URLリンク(angularjs.org)
Knockoutjs
URLリンク(knockoutjs.com)
RequireJS
URLリンク(requirejs.org)
D3.js
URLリンク(d3js.org)
threejs
URLリンク(threejs.org)

7:Name_Not_Found
15/04/24 20:05:34.31 .net
>>1-5


8:Name_Not_Found
15/04/24 20:07:00.25 .net
■各種仕様 (続き)
◆ JavaScript Garden (ja)
URLリンク(bonsaiden.github.com)
◆ JSON (JavaScript Object Notation)
URLリンク(www.json.org)
■諸注意
vol.115でlodashを不必要に推奨して啓蒙する行為が多く確認されており、ライブラリ系の話題はvol.116から禁止されました。
vol.115,116ではライブラリ禁止する発言が見られた直後にライブラリを許可する意図で次スレを立


9:てる行為が確認されています。 本スレッドでライブラリ許可を求める発言が確認された場合は不要な争いを避ける為、スルーすることを推奨します。 ライブラリの話題はライブラリスレへ誘導し、誘導行為への反論はスルーしてください。



10:Name_Not_Found
15/04/24 20:08:55.70 .net
>>7
またお前か。いいかげんにしろ。

11:Name_Not_Found
15/04/24 20:09:42.76 .net
>>5には>>7が入るはずだった。
>>5はスルーで。
概ね、平穏に立てられたかな。

12:Name_Not_Found
15/04/24 20:16:08.06 .net
jQueryプロジェクトからPointer Eventsのpolyfillがリリースされてた。
Announcing PEP 0.3.0
URLリンク(blog.jquery.com)
これ使えば、デスクトップでもスマホでも
同じように動くってことであってますか?

13:Name_Not_Found
15/04/24 20:22:12.73 .net
ライブラリ質問はライブラリスレへ

14:Name_Not_Found
15/04/24 20:46:23.29 .net
polyfillだから問題ないだろ。

15:Name_Not_Found
15/04/24 22:18:42.43 .net
てst

16:Name_Not_Found
15/04/24 22:48:26.59 .net
ライブラリの話題は誘導すればいいんじゃないか?
質問者: jQueryで○○はどうすればいいんですか?
回答者: ここはライブラリの話題は禁止です。こっちに行きましょう。
質問者:分かりました。移動します。
がら~ん
質問者: ○○を実現するにはどうすればいいんですか?
回答者: jQueryを使うことでこんなにシンプルにかけます。
ですがここはライブラリの話題は禁止です。こっちに行きましょう。
質問者:分かりました。移動します。
がら~ん

17:Name_Not_Found
15/04/24 22:55:09.18 .net
>>14
誘導しろとテンプレにも書いてある
だが、後者はライブラリの回答にする必要はない

18:Name_Not_Found
15/04/24 22:56:18.36 .net
>>15
ライブラリを使ったら華麗に解決できることを
教えるために誘導してるんですよw

19:Name_Not_Found
15/04/24 23:19:55.34 jIEPiOmf.net
>>16
ご勝手に

20:Name_Not_Found
15/04/24 23:25:59.72 .net
>>17
言われなくてもいつも勝手にしてるよ?
それにいちゃもんつけないで欲しい

21:Name_Not_Found
15/04/25 06:44:26.14 .net
グチグチ言おうが禁止なものは禁止
どうしてもやりたければライブラリスレに誘導してからするように
人としてそれくらいの最低限のマナーは守れ

22:Name_Not_Found
15/04/25 07:59:21.47 .net
>>10
>>12のいうこともわからないでもないけど、一つ例外を作るとあれもこれもとなりそうなのでライブラリスレで回答した。
スレリンク(hp板:956番)

23:Name_Not_Found
15/04/25 08:53:59.43 .net
ライブラリokのjs質問スレ建てたら?こっちがかなり過疎ると思うけど。

24:Name_Not_Found
15/04/25 10:55:44.64 .net
>>10 への回答。
githubにサポートブラウザが載ってるよ。
> Browser Compatibility
> PEP should work on IE 10+ and the latest versions of Chrome, Safari, Firefox, and Opera.
URLリンク(github.com)

25:Name_Not_Found
15/04/25 12:27:15.92 .net
>>21
過去ログ読めとは言わないけどスレ覧くらい見ようぜ
荒らしが立てたこことライブラリスレの重複がめっちゃいっぱいある

26:20
15/04/25 14:17:33.89 .net
>>22
コピペして楽しい?
ライブラリスレへ誘導しなさい

27:Name_Not_Found
15/04/25 14:20:57.01 .net
>>24
> ライブラリスレへ誘導しなさい
それは君がやっただろう?

28:Name_Not_Found
15/04/25 14:27:41.84 .net
レスコピペとスレたて荒らしはマジで迷惑だからやめろ

29:Name_Not_Found
15/04/25 14:47:43.69 .net
>>25
誘導を無にするコピペをしたのは君でしょう?

30:Name_Not_Found
15/04/25 21:35:11.15 .net
>>27
それが目的だから当然だけど?
君はしたいことをやる。
俺もしたいことをやる。
これでいいじゃないか。

31:Name_Not_Found
15/04/25 21:51:07.82 .net
禁止されていることでも堂々とやる輩には何を言っても無駄

32:Name_Not_Found
15/04/25 22:06:46.74 .net
>>29
俺も無駄だと思うんだけどねぇ。
どうしても自分の決めたとおりにならないと
我慢ができないらしい。

33:Name_Not_Found
15/04/25 22:17:51.59 .net
>>30
おまえはテンプレが理解できないふりを続けるんだな

34:Name_Not_Found
15/04/25 22:19:07.79 .net
>>31
俺は質問者に適切な答えをしているだけだ。

35:Name_Not_Found
15/04/25 22:20:37.32 .net
どう言い繕っても禁止なものは禁止

36:Name_Not_Found
15/04/25 22:23:20.90 .net
わかってないのかなぁ? 禁止していいよ。
俺は破るだけ。
罰したい? どうぞ?
どうやるのかしらんが。
このスレで俺を止めるべく頑張ればいいじゃん?
このスレをそういうスレにしたいのならね。

37:Name_Not_Found
15/04/25 23:19:58.95 .net
罰したいとか、よくもいってもないことを決めつけられるよなあ
レスを返せば返すほど、幼稚な考えが透けて見える

38:Name_Not_Found
15/04/25 23:33:36.17 .net
>>35
じゃあ何がしたいのさ?
好きにやったらいいよ。
それが実現できるかはお前の頑張り次第さ。
俺も好きにやる。
俺の書き込みをするという目的は
すでに実現できてるけどね。

39:Name_Not_Found
15/04/26 00:27:30.60 .net
>>23
本当だ。すまない。

40:Name_Not_Found
15/04/26 00:41:07.74 .net
ブラウザJSはソースコードから何から何まで丸見えであるという特殊性がある。いかなるライブラリであろうとも然り。そんな平明な状況でライブラリのユーザーレベルの質問をして回答するなんてどちらも池沼だ。

41:Name_Not_Found
15/04/26 11:44:49.00 .net
ほぼ全ての言語とオープンソースはソースコードから何から何まで丸見えであるという特殊性がある。
以下同文

42:Name_Not_Found
15/04/26 14:07:17.41 .net
>>36
あれ?
目的は禁止をはずすことじゃなかったんでちゅか?

43:Name_Not_Found
15/04/26 14:15:47.78 .net
>>40
目的は、ここでjQueryやlodashの普及をすることですよ?
前にも言ったはずだけどなぁ?

44:Name_Not_Found
15/04/26 18:12:31.99 .net
こうやってちょっとずつ違うのが乱立するのがJavaScriptっぽいな

45:Name_Not_Found
15/04/27 22:54:10.61 .net
じゃあ乱立する必要なかったね

46:Name_Not_Found
15/04/28 18:58:26.95 Gyhcgryh.net
var a = new Array(2);
a.push(1);
console.log(a.length); // 3
配列のサイズが固定されているのになんで増えるんですか?

47:Name_Not_Found
15/04/28 19:00:17.44 .net
配列のサイズが固定されてないからです

48:Name_Not_Found
15/04/28 19:00:39.15 .net
別に固定なんてされてないぞ
Array(2)は初期長を指定してるだけ

49:Name_Not_Found
15/04/28 21:09:16.73 .net
PHPの正規表現がかなり強力で感動したんだけど、
なんでJavaScriptの正規表現は簡単なパターンしか使えないんだろう?
後読みとか部分式呼び出しとか使いたい

50:Name_Not_Found
15/04/29 07:56:14.11 .net
>>47
なんで使えないんだろうじゃねーよ
お前の推しが足りないからだろうが
正規表現の拡張はES6で候補に上がってたが
利用シーンや重要性を推す人が殆ど誰もいなかったから
優先度が下がって先送りになっちまったんだよ
俺何度もいろんなところで、自分たちの将来に影響するから
きちんとES6の策定にも関われって言ってきただろ
人任せにしてのほほんとしてた奴が今更文句行ってんじゃねーよ
文句言う暇があったらES7に向けてさっさと仕様をまとめろ

51:Name_Not_Found
15/04/29 09:02:08.44 .net
ていうか要らんから。
機械的に作られるパターンを越える複雑化はバグの温床だから使わない。
RegExp#execなどで処理を書く方が明示的で健全だ。

52:Name_Not_Found
15/04/29 09:47:31.48 .net
後読みとか対合(JSONのカッコ等)の拡張は流石に必要と思うけどな。
まあテンプレートリテラルとライブラリを使っても良さそうだ。

53:Name_Not_Found
15/04/29 11:40:17.05 .net
>>48
ごめんなさい

54:Name_Not_Found
15/04/29 13:58:51.15 .net
ES7の仕様に影響するスレ

55:Name_Not_Found
15/04/29 15:02:45.43 .net
>>51
彼はプログラム規格という天に向かって叫んでるだけだ安心しろ

56:Name_Not_Found
15/04/29 19:22:47.36 .net
JavaScriptで作られた正規表現ライブラリを使えば良い
何でもかんでもJavaScriptの言語仕様に入れようとするから
JavaScriptが肥大化してきている。
そのうち反動が来るだろうね。

57:Name_Not_Found
15/04/29 19:32:51.40 .net
仕様は天が作るものじゃなく、人間が作るものだよ

58:Name_Not_Found
15/04/29 21:53:09.34 .net
実際テンプレートリテラルの使用用途として、最初から正規表現ライブラリを通すのが挙げられていた。
URLリンク(www.2ality.com)
ラッキーな事に今や「正規表現オブジェクト」であるためには必ずしも「RegExpのインスタンス」である必要がなく、
幾つかのシンボルメソッドを備えていればいいことになったので、この例のようなことはますます現実的に出来るようになっている。

59:Name_Not_Found
15/04/30 00:02:30.92 .net
element.childrenでsvg要素の子要素取得したいんですけどIEは未対応だったりしますか?

60:Name_Not_Found
15/04/30 02:52:16.29 .net
>>57
URLリンク(quirksmode.org)

61:Name_Not_Found
15/04/30 03:19:41.80 .net
>>57
9からそれなりに(例によって要hasLayout)サポートしているから取れる。
それまでのバージョンはサポートしていないから、例によって、開始タグも終了タグも独立した空要素と見なされるから、childrenなどはそもそもあり得ないことになる。
(一度、shivを車輪の再発名してみれば良い、ここら辺の「20年近くほぼ一貫してきた」IEの仕様が理解出来るだろう。)

62:Name_Not_Found
15/04/30 12:28:45.66 .net
>>58
>>59
ありがとうございます
childNodesだと取得出来るんですが
childrenだと値が戻ってこないんで質問させてもらいました
hasLayaut指定してやってみます

63:Name_Not_Found
15/04/30 13:38:29.28 .net
このコードの結果がブラウザでバラバラなのですが、どちらの振る舞いが正しいのでしょうか?
var o = Object.create({
a: 1,
b: 1,
}
, {
a: { value: 1, enumberable: false },
c: { value: 1, enumberable: false },
});
for(var p in o) console.log(p);
「a,b」…GC,IE
「b」…FF,OP

64:Name_Not_Found
15/04/30 18:21:10.31 .net
>>61
ここで聞かなくても仕様を読めば一発で分かるだろ。
後者のほうが正しい。

65:Name_Not_Found
15/04/30 18:54:46.16 .net
MSがsublimeのパクリのエディタを出したみたいですが
これはJS書くのに向いてますか?

66:Name_Not_Found
15/04/30 20:00:08.79 .net
>>60
IE8
>>document.querySelector('svg')
{...}
>>document.querySelector('svg').children
"オブジェクトがありません。"
>>document.querySelector('svg').childNodes
"オブジェクトがありません。"
>>document.querySelectorAll('svg')
{...}
>>document.querySelectorAll('svg').item(0)
{...}
>>document.querySelectorAll('svg').item(0).children
"オブジェクトがありません。"
>>document.querySelectorAll('svg').item(0).childNodes
"オブジェクトがありません。"

67:Name_Not_Found
15/04/30 20:01:13.86 .net
>>60
IE8
>>(0x1000000 + '/'.charCodeAt(0)).toString(16).slice(1).toUpperCase()
"00002F"
>>document.querySelector('\\00002Fsvg')
{...}
>>document.querySelector('\\00002Fsvg').children
"オブジェクトがありません。"
>>document.querySelector('\\00002Fsvg').childNodes
"オブジェクトがありません。"
>>document.querySelectorAll('\\00002Fsvg')
{...}
>>document.querySelectorAll('\\00002Fsvg').item(0)
{...}
>>document.querySelectorAll('\\00002Fsvg').item(0).children
"オブジェクトがありません。"
>>document.querySelectorAll('\\00002Fsvg').item(0).childNodes
"オブジェクトがありません。"

68:Name_Not_Found
15/04/30 20:02:06.65 .net
>>60
IE8
>>document.getElementsByTagName('svg')
{...}
>>document.getElementsByTagName('svg').item(0)
{...}
>>document.getElementsByTagName('svg').item(0).children
{...}
>>document.getElementsByTagName('svg').item(0).childNodes
{...}
>>document.getElementsByTagName('svg').item(0).children.length
0
>>document.getElementsByTagName('svg').item(0).childNodes.length
0
>>document.getElementsByTagName('/svg')
{...}
>>document.getElementsByTagName('/svg').item(0)
{...}
>>document.getElementsByTagName('/svg').item(0).children
{...}
>>document.getElementsByTagName('/svg').item(0).childNodes
{...}
>>document.getElementsByTagName('/svg').item(0).children.length
0
>>document.getElementsByTagName('/svg').item(0).childNodes.length
0

69:Name_Not_Found
15/04/30 20:07:59.93 .net
昔adobeが出したsublimeパクリエディタは全然使えませんでしたね?

70:Name_Not_Found
15/04/30 20:38:03.27 .net
試せばわかる内容を質問する人は上達も遅いだろうね

71:Name_Not_Found
15/04/30 22:13:01.77 .net
アスペ乙
色んな意見が聞きたいってことだよハーゲ
自分で使っても自分の意見しかわからねーだろバーカ

72:Name_Not_Found
15/05/01 01:33:52.88 .net
>>64
>>65
>>66
IE11でも取得出来ないんです
URLリンク(developer.mozilla.org)
SVGElement、IEの欄はNot supportedとなってるんで、やっぱ出来ないっぽいですね

73:Name_Not_Found
15/05/01 04:54:23.97 .net
試せば分かる内容に意見もへったくれもない。
嘘を教えられたらどうする。

74:Name_Not_Found
15/05/01 08:17:04.95 .net
使いこなしは人それぞれだろう
他人に勧められたからといって自分も使いこなせるとは限らん
少なくとも自分で試してから使いこなせなかったら他人にお勧めを尋ねるぐらいの努力は必要
試さずに聞くのはただの怠慢

75:Name_Not_Found
15/05/01 19:26:17.43 .net
>>70
そもそも18年も前のIE4からallとchildrenはあってだな、それをわざわざ違う仕様でパクって政治的にIEを貶めているわけだ。
IEはSGML注釈宣言なんかも含める仕様だから、後追いの他ベンダーのchildrenは永久にサポートされないわな。

76:Name_Not_Found
15/05/01 19:30:34.81 .net
>>70
11は別として、とりあえず10でDOM-Core的にやってもできないの?本当に?

77:Name_Not_Found
15/05/01 22:58:05.84 .net
G's Baseball Party
"URLリンク(youtu.be)
美脚見て癒されろ

78:Name_Not_Found
15/05/02 05:51:57.92 .net
面白い
ゲームのCMかと思ったら車かよ

79:Name_Not_Found
15/05/02 05:55:08.62 ArIMbZfn.net
【環境】OS:Win7HP Firefox37
配列の整理について質問です。例えば「行ったことがある都道府県アンケート」とかで
 arr0 = ["三重", "滋賀", "長野"], ["京都", "大分", "山口"], ["石川", "秋田", "青森"], ・・・
と色々あって(子の要素数は全てにおいて3)、
  ["三重", "滋賀", "長野"]
  ["三重", "長野", "滋賀"]
  ["滋賀", "三重", "長野"]
  ["滋賀", "長野", "三重"]
は同じ回答とみなし、先頭の ["三重", "滋賀", "長野"] 以外ははじく記述はどうすれば良いでしょうか?
つまり循環要素の重複を元配列 arr0 から弾くという仕組みです。
自前でwhile文とfor文とsplice()を組み合わせて「同じものが3つあればそれを弾く(arr0から消す)」
というコードを書きましたがうまくいきませんでした。

80:Name_Not_Found
15/05/02 06:32:29.66 .net
>>77
arr0は配列の配列ってこと?
完全一致した要素を除くってことでいいよね?
lodashを使っていいなら
var arr0 = [
 ["三重", "滋賀", "長野"],
 ["三重", "長野", "滋賀"],
 ["滋賀", "三重", "長野"],
 ["滋賀", "長野", "三重"],
];
_.uniq(arr0, function(n) {
 return JSON.stringify(n.sort());
});

81:Name_Not_Found
15/05/02 07:01:29.94 .net
もし>>78をIE6, 7で動かしたいなら、
JavaScript実装のJSONオブジェクトを使えばいい。
URLリンク(github.com)

82:77
15/05/02 13:25:38.75 .net
>>78
レス有難うございます。
そうです。arr0は配列の配列です(2次元配列)
lodashについては初見なので調べてみますが、ライブラリの使い方自体不慣れなので
できれば既存のコードを組み合わせてやりたいです。
※ 循環 要素 配列 削除 JavaScript  で検索しましたが希望のサイトが見つからなかった。

>>79
Chromeは使うことがあってもIEを使うことは無いのでこれは無理です。

83:Name_Not_Found
15/05/02 15:03:34.49 .net
素直にアルゴリズムまわりはlodash使ったほうが無難だな。
var arr0 = [
["三重", "滋賀", "長野"],
["三重", "長野", "滋賀"],
["滋賀", "三重", "長野"],
["滋賀", "長野", "三重"],
["滋賀", "長野", "東京"],
];
function uniq(array,callback,thisObj){
var results = array.length ? [array[0]]:[];
for(var i = 1, li = array.length; i < li; i ++){
for(var j = 0, lj = results.length; j < lj; j ++){
if(callback.call(thisObj,results[j]) != callback.call(thisObj,array[i])){
results[results.length] = array[i];
break;
}
}
}
return results;
}
console.log(uniq(arr0, function(array) {
return Array.prototype.slice.call(array).sort().join(',')
}));

84:Name_Not_Found
15/05/02 15:27:43.25 .net
コンマがないとすると
console.log(arr0.map(function (val) {
return val.sort().join(',');
}).filter(function (val, index, arr) {
return arr.lastIndexOf(val) === index;
}).map(function (val) {
return val.split(',')
}))

85:Name_Not_Found
15/05/02 15:39:45.93 .net
ここはライブラリ回答禁止
>>77
- Array#indexOf を3回使う
- for文を3回回す
- Array#sort 後に3つの要素値を比較

86:Name_Not_Found
15/05/02 16:24:11.96 .net
>>83
横からですがこの中で一番処理が軽く済むのはどれですか?

87:Name_Not_Found
15/05/02 17:26:55.94 .net
>>83
あと、一回あたりどれくらいの差がでますか?

88:Name_Not_Found
15/05/02 17:31:18.21 .net
>>80
ライブラリを使いたくなければ、
同等の関数を自分で実装すればいいんだよ。
そうすれば汎用性あるコードになるし、わかりやすいし、
将来ライブラリを使いたくなった時に移植しやすい。
uniqなんてのはプログラマにとっての基礎知識同然だから
(例えばLinuxのコマンドにでも存在する)
そういうものを覚えて使うことが、技術力につながるんだよ。
あと自分で実装しろといったが、オープンソースなのだから
ライセンスに問題なければ、該当関数だけパクっていい。

89:Name_Not_Found
15/05/02 17:32:12.24 .net
>>80
> lodashについては初見なので調べてみますが、ライブラリの使い方自体不慣れなので
> できれば既存のコードを組み合わせてやりたいです。
難しく考えること無いよ。
JavaScriptの関数と何も変わらない。

90:Name_Not_Found
15/05/02 17:34:17.75 .net
>>80
> Chromeは使うことがあってもIEを使うことは無いのでこれは無理です。
勘違いしている。
> _.uniq(arr0, function(n) {
>  return JSON.stringify(n.sort());
> });
これはChromeを含めた最近の全てのブラウザで動く。
だから君の要件を満たしているよ。
ただし、IE6、IE7という古いブラウザでは動かない。
その古いブラウザでも動かす方法が
URLリンク(github.com)
古いブラウザに対応しなくていいなら、これだけのコードで動くよ。

91:Name_Not_Found
15/05/02 17:36:06.64 .net
>>84
> 横からですがこの中で一番処理が軽く済むのはどれですか?
自分で試してみろ
>>85
> あと、一回あたりどれくらいの差がでますか?
自分で試してみろ。配列の量にもよるが
おそらく100マイクロ秒(1マイクロ秒は 100万分の1秒)も
差は出ないだろう。

92:Name_Not_Found
15/05/02 17:39:52.75 .net
>>81
選択肢の項目自体にカンマが含まれるとバグにならないか?
まあ2ちゃんねるで聞く以上、
晒されたコードは質問者がしっかり動作を理解して
ちゃんとテストするべきことだが。

93:Name_Not_Found
15/05/02 17:48:46.21 .net
>>83
あの・・・それでコードは?

94:Name_Not_Found
15/05/02 17:52:19.74 .net
lastIndexOf()を使う方法は面白いね
覚えておこう

95:Name_Not_Found
15/05/02 18:05:28.42 .net
>>90
カンマが含まれてればバグになるんじゃね?ソース読めないの?

96:Name_Not_Found
15/05/02 18:10:01.57 .net
循環を省くのは
arr = [...new Set(arr)]
でできるよ
わざわざライブラリ使うまででもない
それならまだES6トランスレータ使うほうが有意義

97:Name_Not_Found
15/05/02 18:17:40.25 .net
>>94
JSにSetクラスってあるんですか?

98:Name_Not_Found
15/05/02 18:31:23.05 .net
>>93
すんません。ちゃんと読んだら
バグになるってわかりました。

99:Name_Not_Found
15/05/02 18:31:52.34 .net
>>95
どうせまたライブラリがあるって話だろう。

100:Name_Not_Found
15/05/02 18:32:31.51 .net
>>94
質問をちゃんと読むように。

101:Name_Not_Found
15/05/02 18:39:50.76 .net
>>94
firefoxで動かしたが、動いとらん。
var arr0 = [
["三重", "滋賀", "長野"],
["三重", "長野", "滋賀"],
["滋賀", "三重", "長野"],
["滋賀", "長野", "三重"],
["滋賀", "長野", "東京"],
];
arr0 = [...new Set(arr0)]
[["三重", "滋賀", "長野"], ["三重", "長野", "滋賀"],
["滋賀", "三重", "長野"], ["滋賀", "長野", "三重"], ["滋賀", "長野", "東京"]]
現実的な解ではなく、将来のJavaScriptでは標準で~って言ってる奴はいつもこれだ。
動かないコードを出して自己満足

102:Name_Not_Found
15/05/02 18:48:05.71 .net
>>91
方法を知りたかったのでは?
コード制作依頼はお断り

103:Name_Not_Found
15/05/02 18:53:41.69 .net
こんなの制作ってほどでもないだろ。
たかが3行だ。(Arrow Function使えば1行)

104:Name_Not_Found
15/05/02 18:55:28.43 .net
URLリンク(www.visualstudio.com)
これを使ってJSを書いている
意識の高いプログラマーはここにはいないということですか?

105:Name_Not_Found
15/05/02 18:55:37.87 .net
Setは-0と0以外は厳密比較だから、この場面で使うものではないな。
数列のユニーク化にはかなり使える

106:Name_Not_Found
15/05/02 18:57:03.80 .net
最新技術の知識をつけることばかりに気を取られて
実装力がないんだよな・・・。

107:Name_Not_Found
15/05/02 19:37:27.87 .net
>>103
> 数列のユニーク化にはかなり使える
今回の質問は、数列どころか配列だからな。配列のユニーク化
正確に言えば「配列の順番が異なっても区別しない」列のユニーク化
ドヤ顔でSetを使えば解決とか言ってるが、何も解決していないというw

108:Name_Not_Found
15/05/02 19:38:22.66 .net
>>102
エディタ?

109:Name_Not_Found
15/05/02 20:03:46.26 .net
>>101
 Arrow Function
URLリンク(developer.mozilla.org)
これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、
仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。

110:81
15/05/02 20:21:22.80 .net
>>107
それもあって>>81では使ってないんだよ。
それにしても毎度のことだが、ライブラリ使うなっていうだけで
何も出来ないやつばかりだよな。どうせ一人だろうが。
こんなの簡単なんだからさっさと動くコード出せばいいのに。
いつまで待っても、自治厨は動くコード書かないし、へぼいコードしか無いから、
俺が代わりにlodash使わないバージョンを書いてあげるよ。
console.table(arr0.filter(function (val) {
  var k = JSON.stringify(val.sort());
  return ![this[k], this[k] = 1][0];
}), {});
lodashよりも1行増えて可読性も落ちてるし、filter使ってるからIE6, 7では動かないけどな。
こういった使いこなし方は日頃


111:からlodashや他の言語の同等のライブラリを 使っているから思いつけるものさ。知識も大事だが、実装力もつけよう。



112:Name_Not_Found
15/05/02 20:29:44.01 .net
>>105
sort使ってSet使って、文字列化してSetすればいいんじゃね

113:Name_Not_Found
15/05/02 20:38:27.50 .net
>>109
それを実装できないやつに発言力はないよ。

114:Name_Not_Found
15/05/02 20:39:18.12 .net
>>108
{}の位置がずれてるね
あと全部のコードに言えることだけど、sort()は破壊的メソッドだからslice()なりでコピーしておくといいだろうな
console.table(arr0.filter(function (val) {
var k = JSON.stringify(val.slice().sort());
return ![this[k], this[k] = 1][0];
}, {}));
しかしthisArgを使うのは面白い
勉強になった

115:Name_Not_Found
15/05/02 20:40:22.50 .net
そもそも>>94は循環を省く(?)であって誰もSetで重複を除く話はしてない件。
ライブラリ信者が被害妄想の火病で暴れてるだけ。

116:81
15/05/02 20:49:27.57 .net
ちょっとミスってた。質問の仕様は満たしているから
間違いではないんだが、俺が意図していた動作とは違っていた。
JavaScriptのsort()って破壊的だったんだな。
var arr0 = [
 ["滋賀", "三重", "長野"],
 ["三重", "滋賀", "長野"],
];
要するにこうあった時、重複分を取り除いた残りの
["滋賀", "三重", "長野"] を、俺はソートされないと
思ったんだが違った。
元の配列を破壊しないバージョンに書き換え。
console.table(_.uniq(arr0, function(n) {
 return JSON.stringify(_.sortBy(n));
}));
JavaScript単体だとこうするらしい。
arr0.slice().sort();
これはちょっとスマートではないな。

117:Name_Not_Found
15/05/02 20:50:18.24 .net
>>108
なんで俺のレス番パクって語ってるんだよ
そんな糞コードかかねーし
行数とかステップ数の時代じゃねーから語るなよ

118:81
15/05/02 20:53:14.40 .net
>>111
> {}の位置がずれてるね
すまんw
あと破壊的の件、リロードしていなかったから
>>113を書き込んだあとに>>111を見た。
> しかしthisArgを使うのは面白い
これはreduceを使う時の初期値に近い発想から生まれたもの。
テンポラリ変数作りたくないので。

119:81じゃなくて78
15/05/02 20:54:30.71 .net
>>114
あれ? なんで間違えたんだろw
話の内容からわかると思うけど>>78です。

120:78
15/05/02 20:57:29.79 .net
>>114
> そんな糞コードかかねーし
クソコードってswapを実装する時のコードの話?
有名な書き方だと思うんだけどな。
>>81を名乗ったのは本当に恥ずかしい。
クソコードを俺が書いたのかと思われてしまうw
あんな長ったらしいコードは俺は書かない。

121:Name_Not_Found
15/05/02 21:00:20.38 .net
ライブラリは禁止
それは変わらない
人の嫌がることやって楽しいのかね
サイコパス乙

122:78
15/05/02 21:02:03.60 .net
ライブラリ禁止っていうだけで
こんな短いコードも書けない奴に言われたくねーよw
いつも回答を書くのは俺じゃねーか。
言う前にまず実力を伴えや。
俺がレスするよりも先に、お前がレスしてれば
良かったんだぞ?

123:Name_Not_Found
15/05/02 21:18:10.76 .net
お前の過去の回答にケチをつけているのではない。
いつまでもお前がした間違いに構うわけないだろ。
うぬぼれ、被害妄想はいい加減にしろ。
現在進行形で暴れまわってるのを辞めろと言っているんだ。
お前はスレのルールに反しているのだから避難されても反論する権利はない。
このレスへの返答も要らないからこれ以上迷惑かけないよう黙って直ちに立ち去れ。

124:Name_Not_Found
15/05/02 21:27:27.69 .net
誰もライブラリを嫌って禁止にしているのではなく
>>78のような者の態度とそれでスレが荒れることにうんざりして
便利なライブラリを勧めるという1つの手段を捨ててることをいい加減分かるべき
まあそれを分かった上で何度も何度も暴れてるんだから精神を正常か疑わざるをえないな
もしくは本当にオツムが弱くてわからないのだろうか
>>78では建設的にライブラリスレに書いた回答のリンクを貼るだけに留め、
それを何度も繰り返してれば皆自然とライブラリとそれを勧める人を認めるのに
本当に質問者を助けようという意図ではなく
自分勝手に自分の考えをばらまいて無理やり自分へ注意を向かせようとする限り
永遠に平和と和解は訪れない

125:Name_Not_Found
15/05/02 21:51:26.31 .net
ライブラリを認めれば荒れないと思いますが?
なぜなら俺にレスしないのだから
荒れようが無いでしょう?

126:Name_Not_Found
15/05/02 22:03:59.25 .net
>>101
簡単なら尚更質問者に考えさせるべきだろう

127:Name_Not_Found
15/05/02 22:07:51.94 .net
上級者にとっては簡単でも
初心者にとっては難しいだろうさ。
そこで上級者のコードを見せることが
初心者の成長につながる。

128:Name_Not_Found
15/05/02 22:08:39.92 .net
テンプレ無視してまでライブラリ回答したいという一人の我が儘につきあう必要はない

129:Name_Not_Found
15/05/02 22:09:49.07 .net
どこかの質問サイトみたいに、
初心者の質問に、初心者が答えて
上級者から見ればだめなものなのに、
それで納得するような事にはなってほしくないよな。

130:Name_Not_Found
15/05/02 22:10:15.63 .net
>>125
付き合わなくていいと思います。
そういうレスは無視するのが一番です。

131:Name_Not_Found
15/05/02 22:12:16.31 .net
>>124
簡単かどうかでなくて考えるか考えないかの違いだと思うね
考えることすら放棄する人は「方法論はどうでもいいからコードください」と結果だけを求める
そういう人はコードを与えたらその場限りの感謝はするけど、質問すれば作ってくれる事を覚えるからまたコードくださいということになる
それはただの甘え

132:Name_Not_Found
15/05/02 22:13:51.05 .net
じゃあ、方法論までちゃんとおしえんといかんな。
コードを書くだけじゃなく、どうしてこのコードで動くかまで
しっかり解説する。

133:Name_Not_Found
15/05/02 22:18:07.45 .net
次のテンプレには、質問しても
直接的な回答はしてはいけません。
って加えたほうがいいだろう。
まあ守らない奴は守らないんだろうけどなw

134:Name_Not_Found
15/05/02 22:19:16.99 .net
>>129
質問者に覚える気がなければコードだけもらってさようならだから、解説分の手間は徒労だけどな
解説だけを与えれば質問者は考えざるを得ない
まあ、覚える気があるなら「コードください」なんていわないわけでこの人に覚える気があるとは思えんが

135:Name_Not_Found
15/05/02 22:20:26.66 .net
なぁ? なんでそんな質問者の成長のことまで考えて
優しい対応をしないといけないんだ?

136:Name_Not_Found
15/05/02 22:23:11.01 .net
そもそも、>>1で禁止されてるじゃないですか
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。

137:Name_Not_Found
15/05/02 22:23:35.66 .net
俺は自分が満足すればいいから、
さっさと優れた回答をして終わらせるけどねw
質問者のことなんか知ったことじゃない。
回答する手間が惜しいなら、最初から回答しなければいいだけさ。
レスをする意味もないでしょ?
俺は別にやさしくないんで、自分が回答したいと思った時に
自分がしたい回答をするだけさ。
質問者の為を思って説教してあげるつもりもない。

138:Name_Not_Found
15/05/03 04:07:45.55 .net
だったら自己満足の回答垂らすだけにしとけ
他人攻撃や他回答イビリはこのスレなくとも常識で禁止
マナーというより人間として当然のこと

139:Name_Not_Found
15/05/03 07:50:10.54 .net
どっちもどっちだろ、個人攻撃人格攻撃
スレが荒れる原因はライブラリ使って回答してるやつよりも、それに攻撃だけして何も回答してないやつの方にあるように見えるよ。ライブラリ使ってもちゃんと回答してるレスの方が何万倍も役に立ってる
ライブラリ禁止を歌うなら、ライブラリを使わないで淡々と回答出し続けてればライブラリ厨はいつか消えるのに、文句言う奴らがマトモに回答してる所を見た事がない
というような事書くと、いつものルールやらスレ誘導やら何やらの役に立たない書き込みが出てきて、結局質問に答える書き込みは永遠にしない=できない連中のレスで埋まっていくのがJavascriptスレの現状

140:Name_Not_Found
15/05/03 08:20:13.58 .net
えっ、直後に回答しただろ。無理やり明後日の方向から脈絡なくjQueryで珍答した馬鹿が問題なんだよ。

141:83
15/05/03 09:09:30.40 Ol8EXFBr.net
>>100,123,128は自分で回答もしてる
いちいち、回答してる事を釈明しなきゃ聞き入れてもらえないのか?
そもそも、ライブラリ回答してる奴もいちいち個人攻撃しているように見えるが、回答していれば何を行っても良いのか?

142:Name_Not_Found
15/05/03 11:22:31.98 .net
荒らしに触れるのも荒らしってな

143:Name_Not_Found
15/05/03 17:55:14.19 .net
>>136
誰にでも禁止行為を非難する権利はある。
そもそもライブラリ自体が悪なのではなく、それを盾にして行う行為、
もしくは禁止行為と知ってわざとそれを破るという行為が悪なのであって、
それがたまたまライブラリを使う行為なだけ。
だから本来はそもそも禁止にしたくもないが、
そうするとますます調子に乗るから、結局荒らしを弾弓するほうがマシ。
もうそれはこれまでの経験から明らかなのに、終わりかけた騒動を一々ほじくり回す>>136が一番迷惑。

144:Name_Not_Found
15/05/03 17:58:12.08 .net
> 誰にでも禁止行為を非難する権利はある。
すれ違い

145:Name_Not_Found
15/05/03 17:59:52.33 .net
>>140
荒らしに触れるのも荒らしなんだが、
じゃああんた、荒らしにレスするのを
禁止行為にしないのは何故?
あんた本心では、荒らしにレスすることを
楽しんでるだろ?

146:Name_Not_Found
15/05/03 22:10:23.71 .net
荒らしにレスするやつにレスするのも禁止な

147:Name_Not_Found
15/05/03 22:14:16.46 .net
それテンプレに追加しようよ。

148:Name_Not_Found
15/05/04 01:07:04.48 /xxtaeH9.net
var o = document.createElement('div');
o.id = 'a">a</div><div id="b';
o.appendChild(document.createTextNode('b'));
document.body.appendChild(o);

id設定するときにxss発生するのかなと思いましたが開発ツールで確認すると
<div id="a">a</div><div id="b">b</div>
ってなってるのにブラウザ上に文字aが表示されないしquerySelectoryで#aも#bも見つかりませんでした
どうしてですか?

149:Name_Not_Found
15/05/04 01:53:59.07 .net
>>145
書き込み時には数値文字参照または文字実体参照にするのと同じ結果にエンコードされる。
読み取り時にはヒトが解せる「ふつうの」形式にデコードされて表示される。これはXSLTを書いた事が少しでもあれば誰でも経験的に知っているだろう。
俺の適当な放言よりも、正しくはDOM仕様に説明してあるから、そちらを読めば良い。ただしXML的に実体参照をより具体的に操作する目的での仕様になっているからHTMLに切り出して理解するのは面倒だったりする(事を知っているから読んで咀嚼して説明してやる気力が湧かない)。
>>145 の目的とは全く別の話だが、必ず数値文字参照または文字実体参照を書き込みたい時にはinnerHTMLが簡便だ。どういう時にその必ずな目的が発生するかというと、mailto:にクエリー部分を日本語で加える時。

150:Name_Not_Found
15/05/04 06:54:35.80 .net
> 咀嚼して説明してやる気力が湧かない
というよりも、単に説明が下手なだけだと思うよ。

151:Name_Not_Found
15/05/04 06:55:39.50 .net
あと、どこかの中二病が主人公の
ライトノベルで「咀嚼して説明」とか言ってたから
それ思い出して、ちょっとね(苦笑)

152:Name_Not_Found
15/05/04 07:01:24.57 .net
>>145
例えば、<div>a</div>ってあってJavaScriptから、
id="<>"とかやった時に<>という文字列がそのまま埋め込まれるんじゃなくて、
idの値が<>になるように解釈されてからHTMLが加工されるってだけ。
開発ツールの件は単に勘違いだと思うよ。どこがどういう
区切りになっているかよく観察してみればわかると思う

153:Name_Not_Found
15/05/04 07:06:00.20 .net
>>145
> 開発ツールで確認すると <div id="a">a</div><div id="b">b</div> ってなってるのに
なりませんでした。
確認の仕方が間違っているのでは?
console.log(o.outerHTML); // <div id="a&quot;>a</div><div id=&quot;b">b</div>

154:Name_Not_Found
15/05/04 07:23:59.73 .net
>>146
ここまで説明が下手なやつもはじめてみたw
賢いつもりになってる馬鹿だな。

155:Name_Not_Found
15/05/04 07:32:44.47 .net
>>141
スレ違いというのもスレ違いか?

156:Name_Not_Found
15/05/04 07:35:40.60 .net
>>145
GC42のバグ(Elementツリーと console.log(o) の挙動がおかしい)
URLリンク(jsfiddle.net)
バグらしき症状に遭遇したときにはブラウザ名とバージョンも明らかにしよう
他のブラウザでも検証してみよう
バグを発見したら報告しよう
URLリンク(code.google.com)

157:Name_Not_Found
15/05/04 07:40:54.39 .net
>>152
単なるスレ違いだと思えば、そういえばいい。
お前が荒らしだと思った時点で、レスするのをやめろってこと。
荒らしだと思ったのに、会話を続けるから荒れるんだよ。

158:Name_Not_Found
15/05/04 08:17:57.32 .net
分かるように回答するのが意外と難しい質問だな。
HTML と DOM の区別が鍵なんだけど。
別に o.id = "~~~"; を代入するときに文字参照に変換されているわけではないぞ

159:Name_Not_Found
15/05/04 08:33:51.91 .net
>>155
誰にいってるんだ?
質問者以外はわかっていると思うが

160:Name_Not_Found
15/05/04 08:43:32.73 .net
そもそも、DOMとHTMLの違いは関係ないんじゃないかね
質問者は開発者ツールで「<div id="a">a</div><div id="b">b</div> 」と表示される理由を知りたいだけなのだから
答えは>>153で出てる

161:Name_Not_Found
15/05/04 09:02:58.38 .net
> id設定するときにxss発生するのかなと思いましたが
って書いてるから、直接そのままidの場所に挿入されるって思ってるんでしょ?
だからそうじゃないって、>>149で説明したんだけど。

162:155
15/05/04 09:46:21.38 .net
本当だ説明あったね、すまんかった
重箱の隅をつつくようで悪いけど、id="<>"はHTMLにもそのまま記述できるから、例としては分かりづらいかもね。
HTMLの"属性値"に書けないのは「"」とヌル文字だけ

163:Name_Not_Found
15/05/04 11:19:52.68 L6UuB4G4.net
逆のパターンで属性に値を設定するときにxssを発生させるパターンは?

164:Name_Not_Found
15/05/04 11:28:19.77 .net
>>160
ないよ。
なお、innerHTMLは属性ではない。

165:Name_Not_Found
15/05/04 11:49:18.97 L6UuB4G4.net
ってことはinnerHTMLを使わない限り文字をエスケープする必要ないってことでいいですか?

166:Name_Not_Found
15/05/04 11:53:52.05 .net
document.writeとかもあるな。
要するにHTMLというテキストを出力するもの以外って話。

167:Name_Not_Found
15/05/04 11:57:00.70 L6UuB4G4.net
ありがとうございます

168:Name_Not_Found
15/05/04 13:05:16.57 .net
insertAdjacentHTML もある
URLリンク(dvcs.w3.org)
(どうでもいいが、フラグメント識別子が異様に長いな…)

169:Name_Not_Found
15/05/04 15:18:12.92 .net
prototypeはメモリを節約できるそうですが
obj.prototype.func = function() {
a.addEventListener('click', function(e){〜}, false);
}
とかいたらイベントリスナの第二引数の無名関数は呼び出されるたびに作られたりしないんですか?
下みたいに書かなくてもいいんですか?
obj.prototype.myfunc1 = function(e) {〜};
obj.prototype.func = function() {
a.addEventListener('click', this.myfunc, false);
}

170:Name_Not_Found
15/05/04 15:27:05.49 .net
>>166
> ...とかいたらイベントリスナの第二引数の無名関数は呼び出されるたびに作られたりしないんですか?
その通り。
なぜそんな疑問を持ったのか知らないが、prototype を使えば何でもメモリを節約できるものじゃない。
仕組みを知らなければ道具は使えない。

171:Name_Not_Found
15/05/04 15:45:28.08 .net
>>prototypeはメモリを節約できるそうですが
メモリなんてがんがん使っても問題ないって思っとけ
君の今の力量では、そこに注力するだけ無駄

172:Name_Not_Found
15/05/04 16:36:09.79 .net
prototype でメモリ節約しているというよりクロージャを使わないからメモリを節約できると説明するほうがしっくりくるな
その為に prototype を使うわけだが

173:Name_Not_Found
15/05/04 16:39:27.65 .net
具体的にどれくらいメモリ節約できるの?

174:Name_Not_Found
15/05/04 17:23:41.60 .net
きちんとクラスっぽく書けばjitのhidden-classが効いて思ったよりもメモリ節約される。
hidden-class有り無しでは数十~百倍違う

175:Name_Not_Found
15/05/04 18:32:30.16 .net
倍率じゃなくて、具体的なメモリ使用量が知りたい。
1KBなのか1MBなのか100MBなのか。

176:Name_Not_Found
15/05/04 18:46:23.18 .net
それは当然インスタンスの量に比例するだろうし
インスタンス個別に関数を設定していけばかなり大きくなりうる

177:Name_Not_Found
15/05/04 19:26:42.72 .net
>>173
それでは>>166の場合だと、
どれくらいの差がでそうですか?
obj.prototype.func = function() {
a.addEventListener('click', function(e){〜}, false);
}
obj.prototype.myfunc1 = function(e) {〜};
obj.prototype.func = function() {
a.addEventListener('click', this.myfunc, false);
}

178:Name_Not_Found
15/05/04 19:38:40.16 .net
そりゃ『~』の内容量によるでしょうよ。
厳密に言うとコード量というよりコンパイル後の関数のサイズが重要だろうね。

179:Name_Not_Found
15/05/04 20:03:11.11 .net
『~』の内容が0だと仮定すると?

180:166
15/05/04 20:27:24.45 .net
>>167-169
今後はなるべく無名関数を書かない方向にします

181:Name_Not_Found
15/05/04 20:39:29.11 .net
>>174
Win7/GC42では1e3回のループで128KBの差が出ました
次の質問どうぞ

182:Name_Not_Found
15/05/04 20:56:24.95 .net
自分で試せばいいじゃんね
まあCanvas使ってのスプライトオブジェクトみたいに
比較的クラスが大きく数万個になるようなものでないなら
そこまでは気にしなくていいんじゃない
ってか問題になってから気にすればいいんじゃない

183:Name_Not_Found
15/05/04 20:57:16.63 .net
1e3というのは1000回ですね。
10000回で1MBですか。
なるほど分かりました。

184:Name_Not_Found
15/05/04 21:02:45.86 .net
こういう自分で試すのが面倒で他人に聞く自分勝手な質問は辟易するな

185:Name_Not_Found
15/05/04 22:19:45.05 .net
速度/メモリ使用量の質問が頻出するので、質問者が自分で調べる事を促せるように下記URLを>>3のテンプレに入れて欲しい
URLリンク(support.google.com)
URLリンク(developer.chrome.com)

186:Name_Not_Found
15/05/04 22:24:33.35 .net
ぶっちゃけブラウザやその時の状況で大きく変わるだろうから
一般的に言おうってのは無理がある

187:Name_Not_Found
15/05/05 11:22:37.42 .net
俗に言う匿名掲示板の代表例がこのツーチャンネルで、
実際の表示は馬鹿や痴呆でも分かるように名無しさんと書かれている。
訳せば間違いなく匿名関数だが、馬鹿どもは必ずこれを無名関数と呼んでいる。
逆にこれが簡易的な馬鹿発見器になっている。

188:Name_Not_Found
15/05/05 16:06:43.33 .net
いや「名無し」は偽名なんだが?

189:Name_Not_Found
15/05/05 17:08:57.95 .net
馬鹿だの痴呆だの言ってるレスはほっとけ

190:Name_Not_Found
15/05/06 01:10:41.13 .net
このスレで聞くのもどうかと思うのですが
どこで聞けばいいのか分からないので質問します
USBが充電される条件ってどういうものでしょう?
たとえばノートPCのUSBポートにUSB機器を繋げば充電されますが
これにUSBハブを繋いだら、どうでしょう?
電力が分配されていくので、怪しいと思います
バスパワー式のUSBハブなら、充電されそうです
ようするに
充電される/されない
の判断基準が分からないのです
よろしくお願いいたします

191:Name_Not_Found
15/05/06 01:55:35.15 .net
自作板のくだ質スレ辺りで聞くとええ

192:Name_Not_Found
15/05/06 22:50:16.87 .net
if (A) {
if (B) {break;}
console.log(1);
}
if (B)のところで親のブロックから抜けたいんですがエラにーなりました
こういうのって無理なんでしょうか?

193:Name_Not_Found
15/05/06 23:36:33.54 .net
L: if (A) {
if (B) {break L;}
console.log(1);
}

194:Name_Not_Found
15/05/07 03:38:18.14 .net
ラベルって使わないな。

195:Name_Not_Found
15/05/07 04:07:15.64 .net
element.querySelectorAllで自分自身の直下の物だけ取りたいのですが、
「自分自身」はどう書けばよろしいのでしょうか。例えば、
element.querySelectorAll(' > div')
等を行いたいのですが、当然エラーになります。
元のelementはdocument.getElementsByXXX後のコレクションの一部です。

196:Name_Not_Found
15/05/07 04:26:27.68 .net
へぇ、jQueryならこれでできるのにね。
$(element).find('> div');
いいこと聞いた。これもjQuery使うべきっていう
理由の一つにしよう。

197:193
15/05/07 04:29:42.64 .net
:scope > div でできるみたいだが実験的機能で
対応していないブラウザはどうするか?って話が残るね。
URLリンク(developer.mozilla.org)

198:Name_Not_Found
15/05/07 06:33:09.05 .net
jQueryを使う理由にはならない
ポリフィルを使うべし

199:Name_Not_Found
15/05/07 07:51:00.44 .net
>>192
element が確定しているならわざわざ遅い querySelectorAll を使わなくても element.elements を Array#filter するだけでいいような
どうしてもそういう事をしたいなら XPath で /div を指定するかな

200:Name_Not_Found
15/05/07 08:18:37.87 .net
>>192
出先だから検証不可能だが、:root で実現できないか?
URLリンク(www.hcn.zaq.ne.jp)

201:Name_Not_Found
15/05/07 08:22:35.68 .net
:rootは常にdocumentのルート要素だぜよ

202:Name_Not_Found
15/05/07 08:28:42.22 .net
:scopeって答え出てんのに間違った答書く奴なんなの?
喧嘩売ってんの?

203:Name_Not_Found
15/05/07 08:40:24.37 .net
>>198
そうか、それはすまなかった

204:Name_Not_Found
15/05/07 16:53:57.95 .net
すまん、教えてくれ。どうやってもできない;;
■html
<div class="hoge">
<iframe src="URLリンク(example.com"><)
<iframe src="URLリンク(example.com"><)
</div>
■js
$(document).ready(function() {
$(".hoge").children("iframe").load(function(){
var $iframe = $(".hoge").children("iframe")
var ifrmDoc = $iframe[0].contentWindow.document;
var $body = $('body', ifrmDoc);
$body.click(function() {
// クリック時のイベント
});
});
});
こんなかんじでインラインフレームに表示したbody要素をクリックすると、
なんらかの処理をするってのを実装したいんだけど、
AdSenseやFacebookのiframe要素がページ内の別の場所に入ったりすると
なぜか実行できなくなる。
あと、クリックイベントも何回も更新したりするとたまに反応しない時がある。
ちゃんとiframeがloadした後に実行するようにしてんのに、なして;;
なにか考え方が間違ってる?

205:Name_Not_Found
15/05/07 17:48:35.09 .net
>>196
おお.elements便利だなすげー
と思ったらこれform要素しか持ってないじゃねーか!

206:Name_Not_Found
15/05/07 18:03:15.57 .net
変数名にelementとeventを使う奴はほぼ例外無く馬鹿。レガシーやベンダー差違を敢えて利用しているような小賢しい奴はまあ居ない。

207:Name_Not_Found
15/05/07 19:16:35.58 .net
>>202
ごめん、children といいたかった

208:Name_Not_Found
15/05/07 19:45:30.46 .net
>>201
ライブラリ質問はライブラリスレへどうぞ

209:Name_Not_Found
15/05/07 20:28:55.37 .net
>>203
理由を書かない意見は、問答無用で無視することにしている。

210:Name_Not_Found
15/05/07 20:35:45.50 .net
別に直接ライブラリの質問ではないと思う
宣伝・勧誘・布教・洗脳が伴ってなければある程度は許すよ
とはいえこの手の質問はどこのスレで聞こうが
「しらねーよ」で終わるオチ

211:Name_Not_Found
15/05/07 20:39:41.29 .net
ライブラリ質問でないなら $ を使わないコードを書けばいいのにね

212:Name_Not_Found
15/05/07 20:50:50.95 .net
>>201
document.cookieは知っているよね?
親ウインドウがP、iframeで読み込む子ウインドウがCとしよう。
もし、PからC(Facebook等)のdocument.cookieを取得できたら
セッションハイジャックなどのセキュリティ攻撃が可能になるよね?
だから原則として、PとCが別ドメインである場合は、PからC(またはその逆)はアクセス出来ない。
この制約をSOP(Same Origin Policy、同一生成元ポリシー)という
URLリンク(developer.mozilla.org)
ドメインが違っていても、自分がコントロールできるサイトであれば
HTTP access control (CORS) によってアクセス可能にすることは出来る。
URLリンク(developer.mozilla.org)
ただし赤の他人のサイトならば無理。
> ちゃんとiframeがloadした後に実行するようにしてんのに、なして;;
このコードではloadイベントをキャプチャする前にiframeのページが
読み込まれてしまっていたらloadイベントは発生しない。
これはキャッシュされていたり、iframeのページサイズが小さい場合に発生する。
なので、
1. loadイベントをキャプチャする
2. iframeのページが読み込み済みか確認する
3. 読み込まれていたらloadイベントを自分で発生させる。
という手順を取らないといけない。
iframeのページが読み込み済みかどうかは、document.readyStateとiframeのsrcの確認の併用してできたはず。
だいたいのブラウザはreadyStateで判断できるが、一部できないブラウザがあって
そのブラウザではsrcが空かabout:blankでチェックできたはず。詳しくは覚えていない。

213:209
15/05/07 20:52:34.83 .net
>>207
> 別に直接ライブラリの質問ではないと思う
俺もそう思う。何も考えずにレスするのはやめて欲しい。
> 「しらねーよ」で終わるオチ
解答したよ。またいつもの俺だけどなw

214:Name_Not_Found
15/05/07 20:56:19.05 .net
>>201
> AdSenseやFacebookのiframe要素がページ内の別の場所に入ったりすると
>なぜか実行できなくなる。
あれ? 少し勘違いした?
P と C は自分のページで、 Cの中の一部にAdSenseやFacebookが入るってこと?
AdSenseやFacebook部分は>>209に書いた理由でクリックイベントを捉えることはできない。
でもそれ以外なら捉えられるはずだから、>>209に書いた後半の理由かな?

215:Name_Not_Found
15/05/07 21:07:49.81 .net
>>209
おぉ!丁寧にありがとう。助かります。
前半のクロスサイトの問題はクリアしています。
後半はちょっと何言ってるか理解できないので
document.readyStateあたりをぐぐって色々テストしてみます。
ありがとう。
あとすれ違いスマソ

216:Name_Not_Found
15/05/07 21:10:27.76 .net
>>211
あ、PとCは自分のサイトで、
Pの別の場所にAdSenseやFacebookが入ると捕らえられなくなるということです。

217:209
15/05/07 21:11:52.71 .net
> 後半はちょっと何言ってるか理解できないので
(´・ω・`)
1. HTMLページ表示
2. 平行してiframe内ページ表示
3. 平行してiframe内ページ表示完了(iframeのloadイベント発生)
4. jQueryのready発動(DomContentLoaded発動)
5. iframeのloadを見張る
6. だがloadイベントは3ですでに発動済み
ということ。

218:Name_Not_Found
15/05/07 22:01:20.40 .net
>>214
ありがとう、ありがとう、iframeのload消したらできたよ。
そんな順序になってるとはつゆ知らず。
なんとなく順序が関係してるんだろうなと以下の記述しても治らず…。
$(window).load(function(){
$(document).ready(function() {
$().ready(function() {
できたと思ってアップしては本番では動作せずを繰り返すこと丸1日。
助かりました;;

219:Name_Not_Found
15/05/07 22:21:19.16 .net
もう低レベルな自演はいいです。
時間がなくて下手くそな自演しかできないのなら無理にやらなくていいよ。

220:192
15/05/08 00:42:05.69 .net
:scope でいけそうです。回答者の皆様、ありがとうございました。
だいぶググッたのですが出てこなかったので助かりました。(再確認すると見落としているのも事実ですが)


221: マイナーなのは埋もれてしまうのでMDNやw3を見るべきでした。(解説は有名どころから始まるから) querySelectorAllを使うのは、関数を纏めるためです。キーワードを与えるだけで良いので、汎用化できます。 Array.prototype.filterは遅延評価向きではないので今回は使いません。 Xpathはイテレータを返すしオブジェクトプールにもデフォで対応、すごく速そうに見えますが、実際は遅いようです。 今回に関しては、見た目一番美しいquerySelectorAllを使うか、速さを求めてchildNodesで書くか、ということになります。



222:Name_Not_Found
15/05/08 00:55:11.71 .net
でも、Androidじゃ動かないんじゃね?

223:Name_Not_Found
15/05/08 07:56:20.37 .net
scope を使っている時点で IE を切り捨てているから、汎用化といいつつも対象ブラウザを限定してるんじゃないかな
未対応ブラウザは childNodes, children を使う方法もあるけど、コードを分岐すると美しいコードではなくなるからやはり対象ブラウザを限定しているっぽい

224:Name_Not_Found
15/05/08 08:35:47.74 .net
>>217
:scope は Working Draft だから実験的に使うならともかく、一般公開するサイトには使うべきではないよ
勧告するまでに仕様変更されたり、削除される度にコードを書き換える自信があるなら止めないけど
querySelectorAll の代替としては evaluate がいいと思う
XPath は遅いと言うけど、速さよりも美しさを求めてるわけだからこの場合は無視していいんじゃないかな
evaluate の返り値はイテレータ限定ではなく、第4引数で返り値のタイプを指定することが出来る
NodeList を返すのは無理だけど、 XPathResult.ORDERED_NODE_SNAPSHOT_TYPE が比較的扱いやすい
evaluate は Polyfill があるからクロスブラウザの観点からもお勧め

225:Name_Not_Found
15/05/08 12:53:02.36 .net
ていうか、CSSセレクターだけなんとなく書けるていどの手頃な馬鹿だから、jQueryに囲い込まれてんだよ。そいつらはXPathなんて略記すらちんぷんかんぷんだから無理させんなって。

226:Name_Not_Found
15/05/08 16:12:08.81 .net
今RPGを作っていてクリア者リストを作成したいと思っています。
ゲーム本体はフラッシュなどではなくアプリケーションとして配布します。
そしてクリアをしたらサーバーにIDとクリア日時、名前を送信しそのIDでまだ登録されていなければHTMLを編集させたいです。
FC2HPなのでPHPなどは使えませんがjsで出来ますか?

227:Name_Not_Found
15/05/08 16:25:40.45 .net
JSを使って受信したデータに応じてHTMLを出力するのはNode.jsで出来る
でもFC2HPがそれを動かせるかどうかはまた別問題

228:Name_Not_Found
15/05/08 17:06:58.77 .net
phpを使えないサーバーなら無理だと思っていい

229:Name_Not_Found
15/05/08 17:54:27.74 .net
そっか。。ゲーム本体にFTP内


230:臓させる方法もあるかもしれないけどさすがにこれは抵抗がある。 解析されてHTMLグチャグチャにされたら困るし。



231:Name_Not_Found
15/05/08 19:24:14.64 .net
PHP使えるサーバなんて月100円で借りられるよ。

232:Name_Not_Found
15/05/08 20:15:12.18 .net
>>222
固定IP環境なら事前に自ブラウザのポート明け特性を調べておいて
適切なSDPを試すコードをページに埋め込んでおくことで、
WebRTCを使って建てたサーバーページと接続させて集計させることができる
そこまでするなら普通にNodeでも建ててWebSocketとかで通信すればいいとも思うが
どうしてもサーバを立てたくなければこれくらいしかない。

233:Name_Not_Found
15/05/09 00:08:18.47 .net
>>220
確かに、XPathもリテラルで整理できるので、見た目は問題ありません。
見たところ、XPathの方はだいぶ古くて完全に固まった仕様のようですね。
この場合、問題なければ確かにこちらを使用するべきでしょう。
> NodeList を返すのは無理だけど、 XPathResult.ORDERED_NODE_SNAPSHOT_TYPE が比較的扱いやすい
これについては取り出せば良いだけなので問題はありません。
iterateNextしかないのが痛いですね。iteratePreviousがあれば断然これでした。
更新部分のみのチェックならショートカットできますので。
XHTMLだとタグを閉じなければならないので、後方からの検索も出来るはずですが、惜しいですね。
配列が1から始まるのもどうかと思いますが、これも今更変えられないのでしょう。
見たところ、遅くていいのなら積極的に使うべきかもしれませんが、それにしても遅すぎます。
機能が多いので仕方ないとして、単品で61倍はきついです。
querySelectorは17倍なのでまだマシです。
もっとも、:scope>を使うような状況でどうなのかは分かりませんが。
URLリンク(javascripter.hatenablog.com)
URLリンク(satussy.blogspot.jp)

234:Name_Not_Found
15/05/09 00:29:35.12 .net
XPathってブラウザ間の互換性に問題がなかったっけ?

235:Name_Not_Found
15/05/09 01:12:21.64 .net
そこでRubyですよ

236:Name_Not_Found
15/05/09 01:22:54.42 .net
>>228
> XHTMLだとタグを閉じなければならないので、後方からの検索も出来るはずですが、惜しいですね。
> 配列が1から始まるのもどうかと思いますが、これも今更変えられないのでしょう。
snapshotの添え字は 0 から始まるし、後方検索も可能だけど、どういう意味でいってる?
URLリンク(jsfiddle.net)
> 機能が多いので仕方ないとして、単品で61倍はきついです。
どうして 2008-05-16 の記事が現在も通用する情報だと思うかな
速度というのは環境に依存するものだよ
「2008年のブラウザ、PC」と「2015年のブラウザ、PC」では環境が全く違う
ブラウザの最適化も進んでいるはずだし、PCのスペックも上がった
そもそも、直属の子のdiv要素の走査で速度比較する必要があるのだからその記事では参考にならない
ブログ記事を探す時間を自分で検証する時間に回した方が有意義だと思うよ
そして、Working Draft の不安定な仕様を使う理由は通常はない
これは速度以前の問題だよ
それとも実験的な運用だから使っているのかな?

237:Name_Not_Found
15/05/09 02:25:37.75 .net
>>231
> snapshotの添え字は 0 から始まるし、後方検索も可能だけど、どういう意味でいってる?
>>229
> /bookstore/book[1] Selects the first book element that is the child of the bookstore element.
> Note: In IE 5,6,7,8,9 first node is[0], but according to W3C, it is [1]. To solve this problem in IE, set the SelectionLanguage to XPath:
> URLリンク(www.w3schools.com)
JavaScript上の '0' は検索キーでは '1' 、バグを誘発するだけです。
速度は基本的に機能がない方が速いんですよ。だから、どう最適化しても
childNodes >>> querySelector > XPath はひっくり返りません。
ただ、リスト連結をやり出すと話は違ってきます。
これらの場合は最初からクエリに組み込まれていた方が圧倒的に無駄がないからです。
URLリンク(javascripter.hatenablog.com)
ブログの記事は間違いが多いのも事実、特にJavaScriptに関しては本当に間違いだらけで驚きます。
ただ、もちろん日付も確認しているし、読めば妥当かどうかも分かるんですよ。
実験主義なのは構わないと思いますが、それはご自分でどうぞ。

238:Name_Not_Found
15/05/09 02:36:05.72 .net
>>231
> 後方検索も可能だけど、どういう意味でいってる?
lastChildからitaretePrevious()させろということです。
出来るようには見えませんが、こちらの勘違いでしたら御指摘よろしくお願いします。

239:Name_Not_Found
15/05/09 08:01:16.74 .net
>>233
> lastChildからitaretePrevious()させろということです。
>>231で snapshotItem を使って実現出来てるじゃない
snapshotItem で iteratePrevious を使いたいとか意味不明すぎる

240:Name_Not_Found
15/05/09 08:28:29.47 .net
var str =ppkipkpkkiiikpiii
var r=new RegExp('p|k|i','g');
str.replace(r,'★');
でp,k,iって最初に現れた各1回(★p★★pkpkkiiikpiii)だけreplaceさせたいんですが
全てのpとkとiにヒットしちゃいます
p(1回)|,k(1回)とかできないんでしょうか?

241:Name_Not_Found
15/05/09 08:40:43.53 .net
>>232
> childNodes >>> querySelector > XPath はひっくり返りません。
そんなことは皆わかっている。
それでも速度よりもコーディングの美しさを求めており、それが有意な差に結びつかないと思われるから紹介されているだけだろう。
>>228
> 機能が多いので仕方ないとして、単品で61倍はきついです。
> querySelectorは17倍なのでまだマシです。
Q1. あなたの中では2008年にあったブラウザと2015年現在のブラウザが少しも変わらず、61倍の差を維持していることが確定しているのか?
Q2. Q1が確定した場合、あなたが運用するコードで17倍では有意な差が生まれず、61倍で有意な差が生まれることを本当に確認しているのか?感覚だけでものをいってないか?
(10000回DOM走査して「20ms vs 1230ms」の差が生まれているなら理解できるが、それならアルゴリズムを変更した方がマシ)
Q3. javascripterの記事ではブラウザ名とバージョンが開示されてなく、特定のブラウザとバージョンでのみ速度比較している可能性が否定できない。他のブラウザでは別の結果になる可能性は考慮に入れないのか?当然、同じブラウザでも現行版では改善されている可能性もある。
javascripterの記事を鵜呑みにするには未確定情報が多すぎる。

242:Name_Not_Found
15/05/09 09:31:33.02 .net
>>235
否定先読みと後方参照で何とかなりそうでならないなぁ
global外してreplace(...).replaceと重ねるか正規表現スレで聞いてくれ

243:Name_Not_Found
15/05/09 10:44:47.86 HK2xHVEq.net
firefoxの開発ツールでlocalStorage確認したいんですけど
どこをみたらいいんでしょうか?

244:Name_Not_Found
15/05/09 10:53:03.54 .net
Shift+Ctrl+Kでコンソール出してlocalStorage
あるいは歯車マークから設定出してストレージにチェックを入れてタブを増やす

245:Name_Not_Found
15/05/09 10:56:15.00 HK2xHVEq.net
確認できました

246:Name_Not_Found
15/05/09 10:59:32.16 HK2xHVEq.net
確認できたんですが開発ツール上から編集も削除もできないんですね
これはちょっと厳しいですね

247:Name_Not_Found
15/05/09 11:41:00.88 .net
>>234
あなたは「遅延評価」を理解できていません。ググるといいでしょう。
>>236
A1, A3. 確定はしていませんが、なぜ改善していると一方的に考えるのですか。差が開いていることもあり得ます。
A2. 総合的に見て、:scope が持っている問題に比べて、 XPath が持っている問題が大きい、それだけの話です。
実験したければどうぞ。
こちらは今回は :scope で行くか、これまで通り chindNodesで記述するかの選択になります。
ちなみに、Q3を主張するのなら、自己矛盾してますよ。
いくらあなたが実験しても、それはあなたの環境での話であって、全ての環境での説明には成り得ません。
その実験結果で何を得たとしても、参考にはなりませんから、実験するだけ時間の無駄です。
誰かの環境で出た値を参考にして良いのなら、ググルと分かりますが、
妥当だと思える値がそこだけではないブログに大量に出ており、当然同じ方向を向いています。
よって、追試する意味はありません。やったところで同じ結果です。
それは仕様による速度差なのですから、埋まりません。

248:Name_Not_Found
15/05/09 11:44:29.93 .net
>>241
つFirebug

249:243
15/05/09 12:08:15.18 .net
>>241
ちなみに手打ちでよければ、コンソールを表示して、以下で出来る。
これならFirebugを導入する必要はない。
localStorage['test'] = 0;
localStorage['test']
もちろん、setItem/getItem等の他表記も動作する。

250:Name_Not_Found
15/05/09 12:11:02.23 .net
遅延評価で無限を表せるっていうのは知っていたが、
>>217
> Array.prototype.filterは遅延評価向きではないので今回は使いません。
無限とは直接関係ないはずの話で遅延評価が出てきたので
他にも何かあるのかと思ってググってみたらこういうのを見つけた。
Lazy.js を紹介してみる
URLリンク(ayato.hateblo.jp)
> var result = _.chain(array).map(square).map(inc).filter(isEven).take(5).value();
> この場合 underscore.js だと遅いんですね。
> それを解決するのが Lazy.js というわけです。
> var result = Lazy(array).map(square).map(inc).filter(isEven).take(5);
あまり良くわからなかったが、以下の文章でピンときた。
> 大事なこととして each を呼ぶまで Lazy.js は繰り返し処理をしないし、
> 配列を何度も作るようなことはしないということかな。 Lazy.js は全てのクエリを
> シーケンスの中で結合して振る舞いを手続き的なコードと同じようにしている*1。
つまりメソッドチェーンの話か。メソッドチェーンを使った時、mapしてmapしてmapとかやると
配列から新しい配列を作って、その配列からまた新しい配列を作る・・・となってムダな処理をしてしまう。
そういう単純な動きではなく、map(f)してmap(g)してmap(h)するっていうメソッドチェーンを書くと、
map(f+g+h)という形のメソッドが作られて、一回のループで処理するわけか。
値を取得するメソッドを呼ばない限り、メソッドをくっつけるだけで処理自体は行わない。だから遅延評価
その遅延評価がlodash 3.0に入ったね。互換性の話があるから遅延評価されるのは_.chainを使って
メソッドチェーンを始める場合だけみたいだけど、頭の片隅に入れておこう。

251:Name_Not_Found
15/05/09 12:11:30.87 .net
>>241
すれ違い。JavaScriptの話ではない。

252:Name_Not_Found
15/05/09 12:20:12.75 HK2xHVEq.net
>>243
ツールを分けないと行けないのは不便に感じました
15インチのディスプレイで開発ツールとfirebugを2つ出すのは厳しいです
>>244
これもひとつの選択肢になりますがプロジェクトごとにデバックするときに大変な気がしました
Chromeだとdevtoolsだけで削除できますが追加ができないんですよね
データに関するツールってどれも一長一短ある感じでオールマイティなものってないですよね
javascriptでコード書いた


253:りデバッグもやりやすいなあと思いました



254:Name_Not_Found
15/05/09 12:24:27.64 .net
>>247
だからスレ違い。>>1を読め

255:Name_Not_Found
15/05/09 12:44:30.00 .net
JavaScriptに関する質問だから問題ない。

256:Name_Not_Found
15/05/09 12:46:52.29 .net
最近自治厨うざいよな。
JavaScript関係なんだから問題ないだろ。

257:Name_Not_Found
15/05/09 12:58:03.56 .net
ブラウザでのJSデバッグもここの範疇だったし問題ないでしょ
そもそもDevTools扱ってFirefox蹴っちゃおかしいし

258:Name_Not_Found
15/05/09 12:59:23.46 .net
JavaScriptの質問じゃない。
ブラウザがOKなら○○のプラグインありませんか?
みたいな話までOKになってしまう。
けじめはしっかりつけないといかんよ。

259:Name_Not_Found
15/05/09 13:06:31.30 .net
>>237
やっぱ後方参照ぐらいしかないですか
先に進めそうでありがとうございます

260:Name_Not_Found
15/05/09 13:09:14.04 .net
正規表現ばかりに頼ってはいけない
URLリンク(blog.anatoo.jp)
文字列のパースをする必要がある時、どんな文字列にでも
何でもかんでも正規表現で処理しようとするエンジニアをたまに見かける。
正規表現は確かに文字列を扱うための強力な手段だが、万能ではない。
正規表現の性質上、そもそもパースできない文法があるからだ。
従ってそういうケースの時には正規表現ではなく別の方法を使ったほうが良い。
正規表現を無理やり使っても、バグを埋め込んだり、メンテナンスが難しかったり、
正しく文字列をパース出来なかったりで良いことはあまりない。

261:Name_Not_Found
15/05/09 13:09:40.13 .net
なんとなく低レベルな人がここで自治してこれ禁止あれ禁止って言っている印象がある

262:243
15/05/09 13:15:17.68 .net
>>247
> Chromeだとdevtoolsだけで削除できますが追加ができないんですよね
出来るよ。Key/value欄で右クリック。
空欄の中で一番上だけしか反応しないから、若干罠だけど。
ちなみに、この程度の事で揉める方が面倒だと思うのだが、、、
逆に、この質問を「こんなプラグインはありませんか?」のスレでやる方が迷惑だ。

263:Name_Not_Found
15/05/09 13:18:57.57 .net
>>242
確認していないのだから不定だろう?
むしろ、n倍遅いと決めつけるあなたがおかしい
あなたのために実験してあげる気は毛頭ないし、それを押しつけられても困る

264:Name_Not_Found
15/05/09 13:27:24.72 .net
>>255
ルールなのだから禁止。ルールを守れない奴は失格

265:Name_Not_Found
15/05/09 13:29:36.43 .net
JavaScriptを書くということはこういうツールを使うのは常識なわけで禁止にする意味がわからん

266:Name_Not_Found
15/05/09 13:30:57.22 .net
それを言ったら、テキストエディタの話題まで含まれるだろ。
JavaScriptとは関係ない話は禁止だ。

267:Name_Not_Found
15/05/09 13:32:19.13 .net
>>259
お前の常識ってだけだろ。使うのが当たり前だろうが、
使わなくても出来るなら、使わなくていい。
使わずに出来るなら、それはこのスレの対象外

268:Name_Not_Found
15/05/09 13:37:32.60 .net
>>257
> むしろ、n倍遅いと決めつけるあなたがおかしい
ベンチマークをn倍で話したらだよ。
ブラウザメーカー(に限らないが)がよくやるのは
今までよりもn倍になりましたって宣伝。
だけど実際に使ってみたら、それだけの速度向上には見えない。
なぜなら、全体の0.1%がn倍になっただけだから。
n=10だとして、100%の0.1%が10倍になっても、101%になるだけ。
体感速度が変わるわけじゃない。
だからベンチマークで重要なのは実時間。
1マイクロ秒でも10マイクロ秒でも体感速度は変わらない。
1回の実行で10ミリ秒の差があったとしても、一回しか
実行されないような処理なら体感速度に影響はない。
ベンチマークはn倍だけではなく実時間と実行回数も調べるように

269:243
15/05/09 13:57:57.81 .net
>>245
まだ若干勘違いがあるようだけど、こちらの目的は確かにそのページ冒頭に書いてあるとおり。
_.chainが遅延評価ラッパになるのなら、それは便利だとは思う。俺は使わないけど。
遅延評価の利�


270:_は、必要な物が揃ったところで break 出来る点にある。 だから、結果的に「無限」を表せるのであって、「無限」を表すための方法ではない。 全部に対して処理するのなら、snapshotItem も iteratePrevious() も iterateNext() も filter も大した差はない。 ごくごく一部だけのチェックで済むなら、遅延評価はダントツで速くなる。 俺の場合は更新部分のチェックだから、iteratePrevious()が必要。 iteraterをfor文の別記法と思っているのならただの馬鹿。



271:Name_Not_Found
15/05/09 14:17:00.17 .net
> 遅延評価の利点は、必要な物が揃ったところで break 出来る点にある。
それ遅延評価関係ないし
そもそもお前が話してるのは遅延評価の話じゃなくて
ノードリストがliveかstaticかの話だろ。
用語を全くわかってない。

272:Name_Not_Found
15/05/09 14:39:25.22 .net
遅延評価は、物が必要になった所で、評価するから"遅延"評価なんだろ。
物が揃った所でbreakするだけなら、普通にreturnすればいい。
それはforでもforEachでもできること。

273:Name_Not_Found
15/05/09 16:46:36.60 .net
ここ、質問スレだよ

274:Name_Not_Found
15/05/09 16:49:19.79 .net
>>266
質問していいですよ。どうぞ。

275:Name_Not_Found
15/05/09 18:19:02.03 .net
遅延評価とはいかなるものかを言い争っても仕方ないだろ
それがなんという名前のものだろうがやろうとしてることができればいいんだよ

276:Name_Not_Found
15/05/09 19:43:42.25 .net
>>242
後方検索と遅延評価に関連性はない
条件後出しが多すぎるね

277:Name_Not_Found
15/05/09 21:00:03.83 .net
黙って会話を見ていたが、俺以外の回答はどれも
頓珍漢なものばかりだなw

278:Name_Not_Found
15/05/09 21:17:32.33 .net
他の人も多分同じこと思ってるよ

279:Name_Not_Found
15/05/09 21:20:11.68 .net
全ては回答の質できまる。

280:Name_Not_Found
15/05/09 22:08:00.41 .net
>192の質問者もうざい
どれだけ上から目線なんだ

281:Name_Not_Found
15/05/09 22:10:23.34 .net
> どれだけ上から目線なんだ
3メートルぐらい上から目線だよ。

282:243
15/05/09 22:40:18.31 .net
>>245
相変わらずおかしな流れにしかならないから、これで終了にする。
もっと確認したければ、以下を見るといい。
URLリンク(itchyny.hatenablog.com)
ここのEvaluate内で if (v.evaluated) でキャッシュされているところを、
XPathとiterateNext()に置き換えれば、
外部からの制御なしに、無駄な検索/操作を全く行うことがなくなることを理解できるだろう。
これが遅延評価の利点だ。
querySelecter後のfor文中でのbreakではノード探索を中断することは出来ない。
XPathのiterateNext()での中断なら、これができる。
ただし、今回の俺の用途は後方からの探索であり、必要なのはiteratePrevious()だから、惜しかった。
俺の質問は >>192, ベストな回答は >>194,
>>196 から別推薦があったからそれを採用しない理由を >>217 に回答した。
さらに >>220 から物言いが付いたから >>228 で回答、マトモなのはここら辺まで。
>>245 には勘違いがあるけども、彼は自分自身で前に進もうとしているのだから、
質問に回答してもらっている礼として、学習用の情報をこのレスで提供した。
遅延評価とメソッドチェーンは関係ない。
ただ、遅延評価をわざわざ行うのは、Haskellみたいな思想的なものでなければ、
配列的な物のショートカットにしか使えないと思う。
なお、getterに関数を突っ込めばプロパティも全部遅延評価に出来るが、
評価されるのは実際にそれが使われる時だから、
通常のjavascript=記述した時点での評価のノリで書いているとバグる。
ただ、XPathのイテレータはDOMの変更がないことを要求しているので、
おそらくXPath/iterateNextのコンビについては、機械的に置き換えることも可能だと思われる。

283:Name_Not_Found
15/05/09 23:24:06.09 .net
この人は相変わらず、Working Draft な仕様を平然と使うんだな

284:Name_Not_Found
15/05/09 23:37:28.14 .net
速度の話題になるとあやふやな発現が多いね
>>228

285:Name_Not_Found
15/05/09 23:44:51.20 .net
>>275
> 相変わらずおかしな流れにしかならないから
いつもそうなるなら、お前が原因なんじゃね?

286:Name_Not_Found
15/05/10 00:08:26.91 .net
結局、質問者が考えるXpathの総合的な問題(>>242のA2.)とは何だ?
・後方からの遅延評価ができない(>>228) ← querySelectorAll も同じ
・配列が1から始まる(>>228) ← セレクタの nth-child() も同じ
・In IE 5,6,7,8,9 first node is[0](>>232) ← xml.setProperty("SelectionLanguage","XPath"); だけで解決。あるいは Polyfill(>>220)
・速度が遅い(>>228) ← 一回しか実行されないような処理なら体感速度に影響はない(>>262)
それよりかは明らかに:scopeの問題の方が多いと思うが
・Working Draft である(>>220)
・IE, Opera, 古いFF で未サポート(>>194)

287:Name_Not_Found
15/05/10 00:15:02.10 .net
まーた、遅延評価って間違った言葉使ってる。
こいつ、自分の間違いを素直に認めれんのなw

288:Name_Not_Found
15/05/10 00:19:48.74 .net
>>279
XPathも:scopeも両方問題があるように見えるが?

289:Name_Not_Found
15/05/10 04:26:23.46 .net
最近はセレクタにもキャッシュとJITが効くし、
結論としては毎度同じく、実際問題になってから対処すればいいだけ
しかし、原理的に遅いだろうという考え方は危険
この前のhasOwnPropertyの件で分かるように、
よく使われるものほど特別に最適化されるようになっていく

290:Name_Not_Found
15/05/10 08:22:02.86 .net
>>280
こういうヤツJavascriptスレに多いよな、ガキ臭いヤツら
たくさんのブログで大体同じ傾向だから自分で性能評価する必要は無いとかもうね、声出して笑っちゃったwwwww

291:Name_Not_Found
15/05/10 09:48:04.47 .net
IE7またはそれより古いIEは既にどうでもいいが、特にIE5まで遡っているから今更敢えて言うが、おまえらの殆どはブラウザのHTMLでsetPropertyなんてできないだろ。
俺は15年前からできているというか、たぶん地球で最初にやり始めたのが俺だと思うが、IE5だとセキュリティ設定が邪魔してくれる場合は多々ある。5.5からは余裕。というか、5.5みたいなジューシーなブラウザを忘れるわけがないから、おまえらは本当にニワカだよな。

292:Name_Not_Found
15/05/10 09:58:30.56 .net
今時比較検討要項が実行速度なのかね?馬鹿なのか?
なぜfilter/map/reduceを使うのか、誰彼が言わずとも知っているよな?

293:Name_Not_Found
15/05/10 12:18:27.28 .net
実行速度を問題視してるのに、それを比較検討するのはバカなのかwwwww

294:Name_Not_Found
15/05/10 17:24:00.00 .net
ここはお悩み相談所じゃないから。
実際に問題になってから質問してください。

295:Name_Not_Found
15/05/10 17:29:12.64 .net
>見たところ、遅くていいのなら積極的に使うべきかもしれませんが、それにしても遅すぎます。
>機能が多いので仕方ないとして、単品で61倍はきついです。
>querySelectorは17倍なのでまだマシです。
質問者は速度を思い切り問題にしてるんですが…

296:Name_Not_Found
15/05/10 17:34:06.40 .net
本当に速度を気にしているのなら、
速くする意味があるか無いかをちゃんと考えてるよ。
何も考えてない奴は、とりあえず速くしようとする。

297:Name_Not_Found
15/05/10 17:41:14.91 .net
だったら速度の話なんて出さなければいいのでは?質問者が速度の事書いてるから答えてるだけだし

298:Name_Not_Found
15/05/10 17:47:45.87 .net
文字列の変数aの中に、文字列bが何回登場するかをカウントするスクリプトを組みたいのですが、うまくいきません。
var a = 短い単語とか
var b = 長めのテキストとか
var match = b.match(new RegExp(a,"g"));
alert(match.length);
例えばa="あいう";b="あいうあいうお"でしたら、2になります。
しかし、aにある文字(*とか)を入れると、バグることが分かりました。
a="***";b="******"だと2になりません。
調べてみると、new RegExp()は文字列じゃなくてパターン?なので、ちょっと違うようです。
どうすれば*とかの文字もちゃんとカウントできるようになりますか?

299:Name_Not_Found
15/05/10 17:52:08.44 .net
回答はたまには俺以外の奴に任せよう。

300:Name_Not_Found
15/05/10 18:30:28.70 .net
今回は俺も任せようかな

301:Name_Not_Found
15/05/10 20:08:36.70 .net
>>291ですが、良さそうな他のスレを見つけたのでそこで質問し直します
ありがとうございました

302:Name_Not_Found
15/05/11 04:03:52.31 .net
最新ブラウザではセレクタはキャッシュやJITが効くようになってきてるから速度なんて一概に言えん。
無駄に拘ると文字列結合を配列に入れてjoinするみたいにすぐバッドノウハウになるだけ。
本当に代替手段を使わないとどうしようもない自体になってから真剣に検討すべき。

303:Name_Not_Found
15/05/11 05:50:53.09 .net
只今個人でウェブサイトを作っていて複数の画像を回転させようとしているのですが
ひとつづつに動作を記述すのがめんどいので同じ所は関数を作ってまとめようと思い
自分なりに考えてやってみたのですがうまくいきません汗
よかったらどうすればいいのか教えてください
一応個別で一つづつ書いた場合は回転しました。
サンプル
html---------------------
<html>
<head>
<script src="jQueryRotate.js" type="text/javascript"></script>
<script src="rolling.js" type="text/javascript"></script>
</head>
<body>
<img id="imge001">
<img id="imge002">
</body>
</html>
rolling.js-----------------------
$(function(){
function rollin(nam1,nam2){
$(function(){
var angle = 0;
setInterval(function(){
angle+= nam1;
$("nam2").rotate(angle);
},10);//
rollin(5,image001);
rollin(2,image002);
});

304:Name_Not_Found
15/05/11 06:28:30.13 .net
>>295
言ってる事には完全に同意なんだけどさ、今回は質問者がその状態で、選んだ手段がDraftの機能だからこんだけ言われてるんだと思うよ。

305:Name_Not_Found
15/05/11 06:53:25.03 .net
>>296
> (9) ライブラリ関連の話題は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
>>1を読んでから該当スレへ

306:Name_Not_Found
15/05/11 07:27:03.81 .net
>>298
これもライブラリ関連の話になるんですか、、、
関数定義のやり方と使い方だからてっきり本家のjavascriptスレで問題ないと思ってしまいました。
教えてくださり有難う御座います
該当スレで質問しなおさせて頂きます。

307:Name_Not_Found
15/05/11 13:08:53.72 .net
というか使う必要があるコードだろうか

308:Name_Not_Found
15/05/11 16:53:45.79 .net
もうほんとしつこいな。
ライブラリ使ってたら絶対ダメってことじゃねえけど、
明らかに自作自演で荒らすことを目的とした適当なコード挙げんのはやめろ。
もし万が一わざとじゃないとしたらスレの流れくらいは読め。

309:Name_Not_Found
15/05/11 17:07:14.62 .net
>>296
括弧の数があってないじゃないかあ!

function rollin(step,item){
  var angle = 0;
  return setInterval(function(){
    angle = (angle + step) % 360;
    item.rotate(angle);
  },10);
}
$(function(){
  var tid1 = rollin(5,$('#image001'));
  var tid2 = rollin(2,$('#image002'));
});
と思ったらもういないのか…

310:Name_Not_Found
15/05/11 17:07:21.72 .net
ちゃんと荒らしが立てた方じゃないとこで質問し直してるし別人でしょ
テンプレをきちんと読んだ上で区切りがわからずにここで聞いたっぽいけど
彼に色々端折ってjQueryだけ断片的に教えた人は何考えてんのか

311:Name_Not_Found
15/05/11 17:35:58.90 .net
関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間
URLリンク(www.amazon.co.jp)

312:Name_Not_Found
15/05/11 17:50:13.42 .net
JKとかババア乙
JSが至高

313:Name_Not_Found
15/05/11 18:06:06.47 .net
>>303
きちんと読めば何やっても許されるわけじゃないし、
間違いなく故意だね


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch