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

私的良スレ書庫

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

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

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
801 : Name_Not - 2012/02/24(金) 18:56:04.73 ID:??? (+10,-30,-25)
>>800
var f = "こんにちはyou、今日も元気ですねyouはとっても元気だyou&you";
f=f+f.replace(/[^(you)]*/g,"").replace(/you/g,"hey");
alert(f);
802 : Name_Not - 2012/02/24(金) 19:06:44.72 ID:??? (+0,-29,-1)
>>801
var f = "こんにちはyou、今日も元気ですねyouはとっても元気だyooooooo&you";

とかでやってみな
803 : Name_Not - 2012/02/24(金) 19:08:24.60 ID:??? (+59,+29,-2)
>>800>>801
こっちもよさそうですね。本当に助かります
804 : Name_Not - 2012/02/24(金) 19:08:37.20 ID:??? (+42,+29,-6)
おまえら有名な質問スレ用コピペ改変に相手するなよ・・・
805 : Name_Not - 2012/02/24(金) 19:14:37.60 ID:??? (+36,+13,+0)
ここまでテンプレ
806 : Name_Not - 2012/02/24(金) 19:25:56.87 ID:??? (+6,-30,-30)
>>802
var f = "こんにちはyou、今日も元気ですねyouはとっても元気だyouoooooo&you";
f=f+f.replace(/[^you]*/g,"").replace(/you/g,"x").replace(/[you]/g,"").replace(/x/g,"hey");
alert(f);
807 : Name_Not - 2012/02/24(金) 19:34:48.89 ID:??? (-11,-29,-1)
さっきから気になってたんだけど
f=f+じゃなくてf+=の方がよくね?
808 : Name_Not - 2012/02/24(金) 19:34:58.90 ID:??? (+62,+29,-125)
生データ配列からコントローラーを介してビューを表示、データ編集後生データ配列内の元の位置に仕舞ったりする処理を考えています。

ただ、今回はランダムなビューに表示し、生データの順番から判断しただけではビューにアクセスできず、
ビューからも自分の情報が生データ配列のどこに格納されていたかは分からない様な条件なのです。

そこでコントローラーに、作ったビューを生データの順通りストックするリストを用意し、
それを介してお互いアクセスし合おうと思うのですが、もっとシンプルな方法がJavaScriptで行えるなら教えてください。
809 : Name_Not - 2012/02/24(金) 19:55:26.09 ID:??? (+0,-29,-42)
f = f +
f +=
内部処理的にはどういう違いがある?
後者のほうが文字数少ないから処理速度が向上?
810 : Name_Not - 2012/02/24(金) 20:05:06.21 ID:??? (+0,-29,-106)
>>809
馬鹿正直な処理系だと、例えば
 配列[複雑なインデクス計算] = 配列[複雑なインデクス計算] + なんとか
の時にインデクス計算を2回するかもしれないけど、
 配列[複雑なインデクス計算] += なんとか
なら1回で済む。
でも、今時の処理系ならどちらも差はない。
811 : Name_Not - 2012/02/24(金) 20:05:54.90 ID:??? (+3,-30,-28)
>>806
おしい
var f = "y_o_u";
だとまちがう。

ここは .*? の最短一致を使うのがいいんじゃないかな。
youが全く現れないケースに気をつけて。

って、正規表現スレむけのネタのような
812 : Name_Not - 2012/02/24(金) 20:11:46.90 ID:??? (+52,+29,+0)
なかなか難しいもんだな
813 : Name_Not - 2012/02/24(金) 20:13:52.37 ID:??? (+54,+29,+1)
>>797で終わってるし
814 : Name_Not - 2012/02/24(金) 21:02:32.88 ID:??? (+3,-30,-43)
>>806
[] の意味理解してる?
[you] は、"y" または "o" または "u" のいずれか一文字に match。
[^you] は、"y" でも "o" でも "u" でもない任意の一文字に match。
どうしても消してから置換したいなら単語単位は諦めて、

f += f.replace(/y(?!ou)|[^y]/g, "").replace(/y/g, "hey");
816 : Name_Not - 2012/02/24(金) 21:16:57.34 ID:??? (-3,-29,-44)
BASIC系で代入演算使えるようになったの最近じゃね?
817 : Name_Not - 2012/02/24(金) 21:29:27.74 ID:??? (-1,-29,-7)
最短一致つかうんなら

f += f.replace(/.*?(you|$)/g,"$1").replace(/you/g,"hey");

こんな感じかな。
818 : Name_Not - 2012/02/24(金) 21:35:38.87 ID:??? (+17,-10,-29)
replace2回使う方法が一番負荷少ないのかね
俺の中での優先順位が
負荷軽減>コードの見栄え>コードの長さ

こんな感じだからだろうけど
819 : Name_Not - 2012/02/24(金) 21:41:07.31 ID:??? (+57,+29,-41)
replace の回数より match のさせ方を気にした方が良いよ。
とくに、バックトラックを多発する様なパターンは極端に速度が落ちる。
820 : Name_Not - 2012/02/24(金) 21:46:51.42 ID:g6KDZoBL (-20,+29,-7)
>>816
BASICなんてもう20年以上触ってないからワカラナス
小学生だったから、そう書くもんだとしかw
821 : Name_Not - 2012/02/24(金) 21:50:18.38 ID:??? (+57,+29,-18)
たぶんもう質問したやつは置いてけぼりの状態
822 : Name_Not - 2012/02/24(金) 21:58:27.57 ID:??? (+57,+29,-50)
最初のほうで納得してたみたいだからいいんじゃね?

おれなら正規表現使わずに、indexOfを繰り返して回数数えて、
その回数分足すだけにするけどな。
823 : Name_Not - 2012/02/24(金) 23:51:59.72 ID:??? (+66,+29,-32)
複雑な正規表現って一発じゃ思いつかないからなあ
824 : Name_Not - 2012/02/25(土) 00:29:07.29 ID:??? (+14,-30,-296)
コミュニティから抜粋

////////////////////////////////////////////////////////////////////////////////

336 名前:あげあげ坊主 投稿日:2012/02/24(金) 10:08:32 HOST: FLH1Aj137.hkd.mesh.ad.jp

自動ネット収入システム AUTO-WEBMONEY2の裏技みっけた

スリープモードOFF、自動検索ネットワークON、リトライ復元モードOFF、自動カスタマイズシステムON、
セキュリティモードOFF、サーバートランスモードON、自動構築モードOFFにしてから作動させて、
15分くらい放置したあとに自動構築モードONにすると面白い事になる!
(画像)あっという間に・・www


425 名前:アゲハ蝶 投稿日:2012/02/24(金) 10:45:50 HOST:pl39.nas811.p-wakayama.nttpc.ne.jp
>>336
うぎゃあああああああああああああああああすげえええええええええええええ
あっいう馬に金貯まるんだがwww


477 名前:ネコ 投稿日:2012/02/24(金) 11:35:22 HOST:p8146-ibfp504yamaguchi.yamaguchi.ocn.ne.jp
>>336
    ネ申 wwwwww28万www


488 名前:はるき 投稿日:2012/02/24(金) 12:01:35 HOST: KD1140178234.ppp-bb.dion.ne.jp
>>336
キタ━━━(*´・ω・)^ω^)´∀`)´Д`)´ー`)゚∀゚)'A`)゚Д゚)━すげー32マソ━━ !!!


600 名前:425 投稿日:2012/02/24(金) 13:20:02 HOST: pl39.nas811.p-wakayama.nttpc.ne.jp
一時間で56万!!www最高記録か!?w バグ?いいのかこれ?いうなよwww
825 : Name_Not - 2012/02/25(土) 01:14:04.66 ID:??? (+66,+29,-5)
>>823
自分が考えた後、自分より上手い書き方のレス見ると凹む
826 : Name_Not - 2012/02/25(土) 17:19:22.19 ID:??? (+4,-30,-66)
そいや正規表現で思い出したが
compile使うと同じマッチング処理繰り返すより早いって聞いたけど本当?

var f = "こんにちはyou、今日も元気ですねyouはとっても元気だyou&you"
for(1000回){
   f.match(/you/g);
}

より

var f = "こんにちはyou、今日も元気ですねyouはとっても元気だyou&you"
re = new RegExp("");
re.compile("you","g");
for(1000回){
   f.match(re);
}
の方が早いらしいが
827 : Name_Not - 2012/02/25(土) 17:37:43.10 ID:??? (+44,+26,-1)
実測しろ
828 : Name_Not - 2012/02/25(土) 17:38:24.37 ID:??? (+52,+29,-3)
それ俺前試したけど差が無かった
829 : Name_Not - 2012/02/25(土) 17:43:10.49 ID:??? (+5,-30,-299)
>>826
上は毎回正規表現オブジェクトを生成してる
下は生成されたオブジェクトを再利用してる
まぁでも実際のところchromeでは上の方が早い

var m = 1000000, i, test = "aaaaabbccc",reg = /bb/g,re = new RegExp("");re.compile("bb","g");
i = m;console.time("1");
while(--i) { test.match(/bb/g);};
console.timeEnd("1");
i = m;console.time("2");
while(--i) {test.match(reg);};
console.timeEnd("2");
i = m;console.time("3");
while(--i) {test.match(re);};
console.timeEnd("3");

1: 1571ms
2: 1952ms
3: 1952ms
830 : Name_Not - 2012/02/25(土) 17:49:05.57 ID:??? (-1,-29,-28)
IE (IE9 は知らないが) は、String の match メソッドでも
lastIndex をセットするから、それで嵌ったのは苦い思い出。
831 : Name_Not - 2012/02/25(土) 17:50:23.76 ID:??? (+57,+29,-18)
> まぁでも実際のところchromeでは上の方が早い
本末転倒やん
832 : Name_Not - 2012/02/25(土) 18:12:14.76 ID:??? (+3,-30,-56)
>>829

うちだと 3回やって

1: 342ms 1: 348ms 1: 350ms
2: 303ms 2: 304ms 2: 303ms
3: 299ms 3: 309ms 3: 303ms

1を最後に持ってくると
2: 354ms
3: 315ms
1: 322ms
こうなったから、キャッシュが効いてる?
833 : Name_Not - 2012/02/25(土) 18:19:46.03 ID:??? (+57,+29,-18)
差がないというか何回か使うと勝手に最適化されるからな
834 : Name_Not - 2012/02/25(土) 22:07:23.99 ID:??? (+28,+0,-28)
質問。
セレクトボックスで選択中(イベント的にはonfocusしか来てない感じ)に、
カーソルの下にある値に応じて、その値の説明を表示したいと思ってます。
そういう事って可能でしょうか。
835 : Name_Not - 2012/02/25(土) 22:11:57.50 ID:??? (+6,-28,+1)
>>834
onchange
836 : Name_Not - 2012/02/25(土) 22:13:20.05 ID:??? (+62,+28,-25)
>>835
すませんまだ試してないんだけど
onchangeって選択後(マウスを離した確定時)ではなかったでしたっけ
837 : Name_Not - 2012/02/25(土) 22:14:51.87 ID:??? (+52,+7,-15)
>>836
その通り。選択が確定しなければ選択項目を取得できない。
838 : Name_Not - 2012/02/25(土) 22:16:21.52 ID:??? (+65,+29,-1)
>>837
ですよね。
やっぱり選択中は無理ですかねぇ
839 : Name_Not - 2012/02/25(土) 22:22:53.04 ID:??? (-6,-29,-2)
mouseoverでも付けとけば
840 : Name_Not - 2012/02/25(土) 22:26:20.61 ID:??? (+61,+24,-1)
そういうときはselectを自作するもんだ
841 : Name_Not - 2012/02/25(土) 22:34:54.57 ID:??? (+19,-3,-1)
Firefoxでしか動かんな
842 : Name_Not - 2012/02/25(土) 23:02:36.36 ID:??? (+66,+29,-15)
>>840
なるほどその手があったか…めんどくさすぎるorz
でもそれくらいしかなさそうですねw
それ込みで仕様を考えなおしてみます。ありがとうございました。
843 : Name_Not - 2012/02/25(土) 23:44:52.57 ID:??? (+57,+29,-12)
ライブラリが結構あるからそっちを探して改造するほうが早いかもしれんよ
844 : Name_Not - 2012/02/26(日) 00:14:06.87 ID:??? (-3,-30,+0)
(function () {
var a1;
var self;

function ClassA() {
self = this;
};

ClassA.prototype.f1 = function() {
this.a2;
this.a3;
element.addEventListener("click", this.f2, false);
};

ClassA.prototype.f2 = function() {
self.a2;
self.a3;
};

})();

prototypeについて勉強しているのですが、prototypeに設定している関数、上のf1・f2のような間で共通で使う変数a2・a3は
thisやselfで定義や呼び出しを行っているのですが
なんだか書いていて全体がthis・self地獄のようになってしまって・・・
a1を定義しているvarの箇所でa2・a3も定義すればその地獄も解消するような気がするのですが、a1のグローバルな定義?は
a2・a3のthis・selfの方法と大きな違いや問題が起こったりはあるのでしょうか?寧ろa1もthis・selfで定義すべきですか?
845 : Name_Not - 2012/02/26(日) 00:46:27.70 ID:??? (+17,-11,-13)
最近の流行りで言えばクロージャでprivate化しつつって感じかなー
847 : Name_Not - 2012/02/26(日) 01:19:35.72 ID:??? (+5,-29,-96)
>>845-846
レスありがとうございます
とりあえずは、a1のように定義してf1・f2で共通で扱うような手法はミスというか間違いなんですかね
a1もきちんとa2a3同様、this・selfで扱うべしと
private化など具体的に理解できていないl言葉も多いですが、これから調べてみます
848 : Name_Not - 2012/02/26(日) 01:33:40.24 ID:??? (+2,-30,-80)
>>844
変数 self は不要。
ClassA.prototype.handleEvent にして element.addEventListener("click", this, false); でいい。
849 : Name_Not - 2012/02/26(日) 07:19:56.24 ID:??? (+3,-30,-64)
配列がありまして
array[0] ="hoge123";
array[1] ="fu123";
array[2] ="fugefuge123";
をarray.joint()でつなげるとき全部の最後についた123の部分を取り除きたいのですが
forを使って全部毎回slice(0,-3)って取り除くしかないのでしょうか?
850 : Name_Not - 2012/02/26(日) 13:30:49.82 ID:??? (+3,-14,+0)
map
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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