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

このエントリーをはてなブックマークに追加
952Name_Not_Found:2013/11/04(月) 01:57:44.21 ID:???
_.findKey({a:1, b:2, c:3}, function(num) { return num === 2} );

アロー関数版


obj = {a:1, b:2, c:3};
val = 2
key = _.findKey(obj,num=>num===val); //"b"

(比較対象)
key = Object.keys(obj).find(key=>obj[key]===val); //"b"
953Name_Not_Found:2013/11/04(月) 02:01:29.49 ID:???
>>950
2013年10月29日 14時00分45秒

「Firefox 25」正式日本語版がリリース、他ブラウザから履歴や設定の読込が可能に
http://gigazine.net/news/20131029-firefox-25/

ほんの5日前から使えるようになったんだね。
それじゃあ採用できないな。
954Name_Not_Found:2013/11/04(月) 02:03:03.10 ID:???
>>951
俺は質問者じゃないよ。

単に問題点を指摘しただけ。
955Name_Not_Found:2013/11/04(月) 02:47:34.94 ID:???
>>949
lodashってそのままだとCSPに弾かれて使いものにならないからCSP対応ビルド使うんだけど
そうするとIE8とかじゃ上手く動かなかったと思う
956Name_Not_Found:2013/11/04(月) 02:52:49.22 ID:???
nextメソッドなどで読むたびに次の要素を返す配列って
lodashで作れますか?
957Name_Not_Found:2013/11/04(月) 02:53:56.44 ID:???
CSPって何です?
958Name_Not_Found:2013/11/04(月) 02:59:10.32 ID:???
Web屋ならContentSecurityPolicyくらい知っとけ
959Name_Not_Found:2013/11/04(月) 03:02:32.08 ID:???
ググった所、なんか面倒くさそうです
面倒さを増やすだけのものなんて無視でいいのでは
960Name_Not_Found:2013/11/04(月) 03:51:28.62 ID:???
>>955
なあ、おまえ。

lodashとかがの外部ライブラリを
直リンクで読み込んでんのか?

普通自分のサイトに置いて使うから
自作のjavascriptと同じで、CSPなんか
関係ねーだろ?
961Name_Not_Found:2013/11/04(月) 04:26:01.82 ID:???
CSPが理解できてない奴がいるみたいだが
CSPのデフォルトの設定だとeval系が禁止されるから
それを使ってるスクリプトは動かない
他所とかそういう問題ではないな
962Name_Not_Found:2013/11/04(月) 04:32:39.67 ID:???
ファッ!?lodashはevalなんて使ってんの?
963Name_Not_Found:2013/11/04(月) 05:01:51.51 ID:???
使われてねえよwww狂言乙w
964Name_Not_Found:2013/11/04(月) 05:06:47.52 ID:???
コスプって足かせにしか見えないんだが?
何が嬉しいの?
965Name_Not_Found:2013/11/04(月) 05:27:29.79 ID:???
いろんな脆弱性への防壁
966Name_Not_Found:2013/11/04(月) 05:35:59.60 ID:???
>>963
new Fuction
967Name_Not_Found:2013/11/04(月) 06:23:56.71 ID:???
lodashディスのためにわけのわからんもん持ち出してきたアンチ乙
968Name_Not_Found:2013/11/04(月) 06:39:48.73 ID:???
耳を疑った
この板もレベル落ちたんかなあ……
969Name_Not_Found:2013/11/04(月) 06:45:06.17 ID:???
関数が関数の中から自分自身を置き換えることはできますか?
970Name_Not_Found:2013/11/04(月) 06:48:27.09 ID:???
日本語でおk
971Name_Not_Found:2013/11/04(月) 06:49:15.01 ID:???
できる
ただし関数名を用いたコールには効果があるが当然参照コールにはない
972Name_Not_Found:2013/11/04(月) 06:51:08.37 ID:???
function hoge(){
var f = function(){
console.log("a");
};
hoge = f;
}

hoge();

これで出来てるようです
ただjsbinで警告が出ます
おそらくJSHINTを使っているのだと思いますが
警告を出さないようにする方法ありますか?
973Name_Not_Found:2013/11/04(月) 06:53:34.89 ID:???
一回目のコールで関数オブジェクトのプロパティを初期化
二回目以降は初期化チェックもしない
っていうのをしたいです
974Name_Not_Found:2013/11/04(月) 07:15:46.23 ID:???
こうするのが定跡


var MyFunction = function(x) {
InitMyFunction();
return MyFunction(x);
};


function InitMyFunction(x) {
......

MyFunction = function(x) {
......
}
......
}
975Name_Not_Found:2013/11/04(月) 09:25:16.01 ID:???
ありがとうございます
別関数にしなくてもこれでいけました\(^o^)/

var hoge = function (){
hoge = function(){
console.log("a");
};
return hoge();
};
976Name_Not_Found:2013/11/04(月) 09:34:10.87 ID:???
相談です。
例えば3字ずつ文字列を分割して配列に分けようとしています。

var a=[];
for(var i=0;i<s.length;){
var t="";
for(var j=0;j<3;j++){
if(i<s.length){
t+=s[i++];
}
}
a.push(t);
}

ここまで作りましたが、
s = "ab𠮟cdef";
の時など、文字によって化けることがあるものだと知りました。
化かさない方法をご享受ください。
977Name_Not_Found:2013/11/04(月) 09:53:43.91 ID:???
>>976
s = "ab𠮟cdef";


//ES5
s.match(/([\uD800-\uDBFF\uDC00-\uDFFF]?.){1,3}/g)

//ES6
s.match(/.{1,3}/gu);


//["ab𠮟", "cde", "f"]
978Name_Not_Found:2013/11/04(月) 10:01:06.11 ID:???
>>976
var fn = function(str, num) {
var len = str.length,
i = 0,
arr = [];

for (; i<len; i+=num) {
arr.push(str.substr(i, num));
}

console.log(arr);
return arr;
};

fn('test', 3); // ["tes", "t"]
fn('マルチバイト文字列', 3); // ["マルチ", "バイト", "文字列"]
979Name_Not_Found:2013/11/04(月) 10:01:55.17 ID:???
>>975
こういう関数を書き換えるテクニックをオライリーのJS本で読んだ記憶があるのですが
何だったか分かりますか?
980Name_Not_Found:2013/11/04(月) 10:07:36.26 ID:???
>>978
全くうまく行きません。
fn("ab𠮟cdef",3);

>>977
こんなに簡単に!
できましたありがとうございます!!!
981Name_Not_Found:2013/11/04(月) 11:57:08.88 ID:???
>>967
別にlodashディスってないだろ。
CSP対応のビルドまで公式で用意してあるって
逆に評価してるぐらいだ。

カスタムビルドもやり方は簡単。
http://lodash.com/custom-builds
http://kitcambridge.be/blog/custom-builds-in-lo-dash-2-dot-0/

node環境を用意して、npm i -g lodash-cliで
lodashのcliツールをインストール。
その後は、lodash mobile (またはcsp)ってやればいいだけ。
982Name_Not_Found:2013/11/04(月) 12:07:14.25 ID:???
せやな
そこまでして使ってるっていうんだからむしろ大ファンだろう
983Name_Not_Found:2013/11/04(月) 12:13:29.12 ID:???
CSP対応のビルドって今はmodernビルドのエイリアスになってるよ。
mobileビルドはmodernビルド+Safari5.1未満対応

http://kitcambridge.be/blog/custom-builds-in-lo-dash-2-dot-0/
> The modern build also includes pre-compiled iteration methods,
>making it suitable for use in environments that enforce the content
>security policy. The csp build, previously recommended for this purpose,
>is now an alias of the modern build.

>The mobile build is based on the modern build, but includes additional fixes for Safari < 5.1.
>These are necessary for compatibility with Mobile Safari on iOS 5.

だからlodashのトップにおいてあるmodernビルドを使えばいいだけだね。
わざわざ自分でカスタムビルドを作る必要はない。

modernビルドがIE8で動かないのは、そもそもES5に最適化したのがmodernビルドだから。
デフォルトはlodash compatビルドだよ。
984Name_Not_Found:2013/11/04(月) 12:29:46.31 ID:+8XA1Gxp
すいません、hoge.js(Answer.hoge)の中身を3秒おきに取得したいのですが、どうやったらよいでしょうか?

現在、下記のようになっており、hoge.jsの中を変えても、反映されません。

<script type="text/javascript" src="hoge.js"></script>
<div id="strbiz">このタグの中身を書き換えます。</div>

<script>
<!--//
var INTERVAL=3000;
var COUNT_MAX=300;
var cnt=0;
function callback(value) {
if (cnt > COUNT_MAX) {
clearInterval(id);
return;
}
if(Answer.hoge == 1){
document.getElementById("strbiz").innerHTML='<a href="javascript:void(0);" onclick="this.href=bizurl;">クリックしてください </a>"cnt"';
}else{
document.getElementById("strbiz").innerHTML='<a href=\'javascript:void(0)\' onClick="window.open(bizurl,\'subwin\',\'width=300,height=300\');">入力が間違ってます</a>';
}
cnt++;
}
var id=setInterval("callback('value');", INTERVAL);
//-->
</script>
985Name_Not_Found:2013/11/04(月) 12:38:26.02 ID:???
>>984
コードの書き方が古すぎる。

* hrefにjavascript入れるな
* onclick使うな
* setIntervalに文字列を入れるな

まずそこから始めよう
986Name_Not_Found:2013/11/04(月) 12:46:30.58 ID:+8XA1Gxp
>>985
さっそくありがとうございます。自分の情報古いですね。


<script type="text/javascript" src="hoge.js"></script>

の中身を定期的に読み込みに行く処理はどうやったらいいか分かりますか?
987Name_Not_Found:2013/11/04(月) 12:53:06.82 ID:???
わかるけど、コード汚くて読むきしねぇwww
988Name_Not_Found:2013/11/04(月) 14:03:11.05 ID:???
まずは
Script要素のtypeとコメントアウトを取ってくれ
989Name_Not_Found:2013/11/04(月) 14:11:07.75 ID:???
>>988
コメントは省略不要だし、type属性もHTML5か不明なのに省略させちゃ駄目じゃないか
990Name_Not_Found:2013/11/04(月) 14:13:14.72 ID:???
意味不、デファクトのコメントアウトがいいんなら
同じくデファクトでtype省略も問題無いだろ
矛盾し過ぎ
991Name_Not_Found:2013/11/04(月) 14:21:14.24 ID:???
>>989
「省略不要」って要るのか要らないのか判りにくいぞ。
992Name_Not_Found:2013/11/04(月) 14:36:47.48 ID:???
>>991
コメントアウトはポリシー次第だからどちらを選ぶかは製作者の自由だけど、何も言わずにコメントアウト不要はないと思った
個人的には古いブラウザを考慮して残すか外部JS化がいいと思うけどね
993Name_Not_Found:2013/11/04(月) 14:42:58.50 ID:???
スクリプトを表示してしまうようなガラケーは
ほぼ停波で消えたし考える必要ないな
HTMLコメントについては今でもパーサーを新しくしているV8で
他の実装との差について触れられてたりするし
使わないのが何より吉

あと本番では外部ファイルが基本だけど
ここに書くときは不要なものは全部取り去って埋めるのでいい
それかどこかにあげる
994Name_Not_Found:2013/11/04(月) 14:44:43.26 ID:???
>>990
> 同じくデファクトでtype省略も問題無いだろ
お前は何を言ってるんだ?
周りがやっていたら何でもやっていいと思っちゃうタイプなのか
995Name_Not_Found:2013/11/04(月) 14:47:26.89 ID:???
typeはVBScriptと混在させて書いた時のIEでくらいしか関係ないな
996Name_Not_Found:2013/11/04(月) 14:50:47.36 ID:???
>>992,994
何ムキになってんだ?
ただでさえ2chはソースコードが読みにくいから
ゴチャゴチャ書かない方がいいって言ってんだよ
>>987に乗ってのコメントなの、分かります?
別に人のスタイルやポリシーにまでは口は出さないが
読む人の事を考えてってことだよ言わせんな恥ずかし
997Name_Not_Found:2013/11/04(月) 14:53:33.58 ID:???
>>993
そうなんだよねえ
最近のブラウザならscript要素を理解しないブラウザはないから、という主張も理解できるから強くは反対できない
どちらの主張も理解できるから理由を述べた上で意見するべきだと思うんだよな
998Name_Not_Found:2013/11/04(月) 14:55:13.35 ID:???
HTML4.01においてtype属性は必須であり、省略できない
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/scripts.html#h-18.2.1
デファクト云々の人はにわかなので放置で
999Name_Not_Found:2013/11/04(月) 14:56:26.04 ID:???
>>998
自分の首絞め乙
1000Name_Not_Found:2013/11/04(月) 14:57:22.17 ID:???
>>1000ならいろんな厨しぼう
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。