+ JavaScript の質問用スレッド vol.111 + _.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"
>>951 俺は質問者じゃないよ。
単に問題点を指摘しただけ。
>>949 lodashってそのままだとCSPに弾かれて使いものにならないからCSP対応ビルド使うんだけど
そうするとIE8とかじゃ上手く動かなかったと思う
nextメソッドなどで読むたびに次の要素を返す配列って lodashで作れますか?
CSPって何です?
Web屋ならContentSecurityPolicyくらい知っとけ
ググった所、なんか面倒くさそうです 面倒さを増やすだけのものなんて無視でいいのでは
>>955 なあ、おまえ。
lodashとかがの外部ライブラリを
直リンクで読み込んでんのか?
普通自分のサイトに置いて使うから
自作のjavascriptと同じで、CSPなんか
関係ねーだろ?
CSPが理解できてない奴がいるみたいだが CSPのデフォルトの設定だとeval系が禁止されるから それを使ってるスクリプトは動かない 他所とかそういう問題ではないな
ファッ!?lodashはevalなんて使ってんの?
使われてねえよwww狂言乙w
コスプって足かせにしか見えないんだが? 何が嬉しいの?
いろんな脆弱性への防壁
lodashディスのためにわけのわからんもん持ち出してきたアンチ乙
耳を疑った この板もレベル落ちたんかなあ……
関数が関数の中から自分自身を置き換えることはできますか?
日本語でおk
できる ただし関数名を用いたコールには効果があるが当然参照コールにはない
function hoge(){ var f = function(){ console.log("a"); }; hoge = f; } hoge(); これで出来てるようです ただjsbinで警告が出ます おそらくJSHINTを使っているのだと思いますが 警告を出さないようにする方法ありますか?
一回目のコールで関数オブジェクトのプロパティを初期化 二回目以降は初期化チェックもしない っていうのをしたいです
こうするのが定跡 var MyFunction = function(x) { InitMyFunction(); return MyFunction(x); }; function InitMyFunction(x) { ...... MyFunction = function(x) { ...... } ...... }
ありがとうございます 別関数にしなくてもこれでいけました\(^o^)/ var hoge = function (){ hoge = function(){ console.log("a"); }; return hoge(); };
相談です。 例えば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"; の時など、文字によって化けることがあるものだと知りました。 化かさない方法をご享受ください。
>>976 s = "ab𠮟cdef";
//ES5
s.match(/([\uD800-\uDBFF\uDC00-\uDFFF]?.){1,3}/g)
//ES6
s.match(/.{1,3}/gu);
//["ab𠮟", "cde", "f"]
>>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); // ["マルチ", "バイト", "文字列"]
>>975 こういう関数を書き換えるテクニックをオライリーのJS本で読んだ記憶があるのですが
何だったか分かりますか?
>>978 全くうまく行きません。
fn("ab𠮟cdef",3);
>>977 こんなに簡単に!
できましたありがとうございます!!!
せやな そこまでして使ってるっていうんだからむしろ大ファンだろう
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ビルドだよ。
984 :
Name_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>
>>984 コードの書き方が古すぎる。
* hrefにjavascript入れるな
* onclick使うな
* setIntervalに文字列を入れるな
まずそこから始めよう
986 :
Name_Not_Found :2013/11/04(月) 12:46:30.58 ID:+8XA1Gxp
>>985 さっそくありがとうございます。自分の情報古いですね。
<script type="text/javascript" src="hoge.js"></script>
の中身を定期的に読み込みに行く処理はどうやったらいいか分かりますか?
わかるけど、コード汚くて読むきしねぇwww
まずは Script要素のtypeとコメントアウトを取ってくれ
>>988 コメントは省略不要だし、type属性もHTML5か不明なのに省略させちゃ駄目じゃないか
意味不、デファクトのコメントアウトがいいんなら 同じくデファクトでtype省略も問題無いだろ 矛盾し過ぎ
>>989 「省略不要」って要るのか要らないのか判りにくいぞ。
>>991 コメントアウトはポリシー次第だからどちらを選ぶかは製作者の自由だけど、何も言わずにコメントアウト不要はないと思った
個人的には古いブラウザを考慮して残すか外部JS化がいいと思うけどね
スクリプトを表示してしまうようなガラケーは ほぼ停波で消えたし考える必要ないな HTMLコメントについては今でもパーサーを新しくしているV8で 他の実装との差について触れられてたりするし 使わないのが何より吉 あと本番では外部ファイルが基本だけど ここに書くときは不要なものは全部取り去って埋めるのでいい それかどこかにあげる
>>990 > 同じくデファクトでtype省略も問題無いだろ
お前は何を言ってるんだ?
周りがやっていたら何でもやっていいと思っちゃうタイプなのか
typeはVBScriptと混在させて書いた時のIEでくらいしか関係ないな
>>992 ,994
何ムキになってんだ?
ただでさえ2chはソースコードが読みにくいから
ゴチャゴチャ書かない方がいいって言ってんだよ
>>987 に乗ってのコメントなの、分かります?
別に人のスタイルやポリシーにまでは口は出さないが
読む人の事を考えてってことだよ言わせんな恥ずかし
>>993 そうなんだよねえ
最近のブラウザならscript要素を理解しないブラウザはないから、という主張も理解できるから強くは反対できない
どちらの主張も理解できるから理由を述べた上で意見するべきだと思うんだよな
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。