[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/25 03:31 / Filesize : 355 KB / Number-of Response : 1024
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

JavaScript の質問用スレッド vol.125



1 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 15:57:40.26 ID:TS5TGpUB0.net]
!extend:checked:vvvvvv:1000:512
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。次スレは>>950>>2の「次スレの立て方」を元に立ててください

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

■前スレ
JavaScript の質問用スレッド vol.124
https://mevius.5ch.net/test/read.cgi/tech/1636525464/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured

246 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 01:04:55.03 ID:Gf+fcBNM0.net]
推奨しない書き方はほぼESLintで弾けるだろ

247 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 14:55:32.43 ID:uQH5TeI20.net]
ドキュメント内の全てのテキストフレームを選択するのは、

var txtObj = activeDocument.textFrames;
for (var i=0; i<txtObj.length; i++){
txtObj[i].selected = true;
}

で、ここからそれらを変形させたりしていくんですけど、
ドキュメント内全てでは無くて、最初に選択したものの中から
さらにテキストフレームのみを選択するにはどう書けばいいのでしょうか?

var sel=activeDocument.selection;
  var txtObj = sel.textFrames;
for (var i=0; i<txtObj.length; i++){
txtObj[i].selected = true;

これでは、var txtObj = sel.textFrames;でエラーが出ます。


ドキュメント内の選択したものの中のテキストフレームのみを選択しないと、
ドキュメント内の全てのテキストフレームが変形されてしまいます。

248 名前:243 mailto:sage [2022/11/23(水) 15:35:10.48 ID:uQH5TeI20.net]
var sel=activeDocument.selection;
for (var i=0; i<sel.length; i++){
if(sel[i].typename != "TextFrame"){
sel[i].selected = false;
}
}

これで出来ました。
お騒がせしました。

249 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 15:52:37.80 ID:QLRwruG1d.net]
JavaScriptの一般的な文法とかの話はともかく、adobe固有の問題はここで聞くべきではないよ

250 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 09:02:34.19 ID:8kN4Xh6N0.net]
>>244
>>245の言うとおり、もはやここで聞く内容ではない。
adobe forumで聞いた方がいいけど、
レベル的にまだネットで調べれば簡単に答えが見つかる内容だから
なるべく自分で調べたらいいと思う。

251 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 13:05:30.40 ID:DUoZRcjr0.net]
一般的なJavaScriptってgeometricBoundsとか使いませんか?
長方形の座標を得るメソッド

252 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 13:16:11.58 ID:8kN4Xh6N0.net]
>>247
同じアドビでもindesignとillustratorではgeometricBoundsのx,y値の順番が異ってたり、
もはやアプリごとの話題になってくる。

253 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 13:35:39.39 ID:5aiuStXqd.net]
>>247
使えません
それはadobe固有のものです

254 名前:デフォルトの名無しさん mailto:sage [2022/11/24(木) 15:52:34.09 ID:DUoZRcjr0.net]
>>248
>>249
そうなんですか

水平垂直はわりと簡単に出来るけど、斜めになると数学の三角関数勉強しないといけないって…
道は険しそう…



255 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 03:26:14.01 ID:4TMxj3Y80.net]
$.Deferred()って分かりにくい。

256 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 17:44:10.29 ID:d3/PWV150.net]
配列内の数字が1つでも違ってたらtrueというのをif文で書きたいのですが、どう書けば良いのでしょうか?

例えば[6.356, 6.356, 7.482, 6.356]はtrueで、[6.356, 6.356, 6.356, 6.356]はfalseです。
配列内の数字の個数は決まっていません。
if(~){return;}の~の部分が知りたいのですが…
(違う数値が混じっていたら終了(return)したい)

257 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 18:01:34.82 ID:NOaCOzi6d.net]
配列内の数値が全部同じならtrue,というのを書いてみてください
ところで浮動小数点数には誤差がつきものなので
「だいたい同じ」を意味する処理を書く必要があります

258 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 18:03:10.25 ID:gnjN6QfX0.net]
>>252
配列の変数名がlだとして、
len(set(l))が1より大きかったら違う値が入ってる

259 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 18:10:27.64 ID:v7fq4Pg10.net]
そんな丁度いいオブジェクトがあったんだな

260 名前:デフォルトの名無しさん [2022/11/25(金) 19:20:10.26 ID:NT6Ragjt0.net]
>>252
var a = [6.356, 6.356, 7.482, 6.356];
if (new Set(a).size != 1) return;

全部同じならSetのsizeは1になるはずだから

261 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 19:30:19.48 ID:d3/PWV150.net]
>>254
エラーが出ますが、間違っていますか?

var I=[72.356, 72.356, 72.356, 72.356, 72.356];
If(len(set(I))>1){
alert("違う値が入っています");
}
alert("全部同じ値です");

262 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 19:45:09.62 ID:d3/PWV150.net]
setってES2015(ES6)で導入されたって書いてありますね。
自分の環境では使えないんだと思います。
let()もたぶん…

263 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:02:47.41 ID:1Hc/VSWcp.net]
len も set もそんなメソッドは定義されてない
>>256 は最近のブラウザなら動くはず

264 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:09:20.31 ID:d3/PWV150.net]
このコードではダメですか?

var I=[72.356, 72.356, 75.356, 72.356, 72.356];
for(var s=0;s<I.length-1;s++){
if(I[s]!=I[s+1]) return;

例外が出るでしょうか?



265 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:09:23.18 ID:XjJhlDNk0.net]
lenとかsetってpythonじゃ?

266 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:15:54.07 ID:d3/PWV150.net]
>>261
lenはpythonみたいです
setはES2015(ES6)で導入されたらしいです

}が抜けてました。

var I=[72.356, 72.356, 75.356, 72.356, 72.356];
for(var s=0;s<I.length-1;s++){
if(I[s]!=I[s+1]) return;
}

です

267 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 20:59:13.75 ID:BAWwEyW20.net]
念のため指摘しておくが、Setとsetは別もんだぞ
確かにどっちもES2015で策定されてるが
Set が重複なしの集合
setはアクセサプロパティの構文で使われるやつ

268 名前:デフォルトの名無しさん [2022/11/25(金) 21:07:08.32 ID:hxoXdPtJa.net]
>>252
var a = [6.356, 6.356, 7.482, 6.356];
if (a.join('').replace(RegExp(a[0], 'g'), '')) return;

falsyな値が入らないならこれでも

269 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 21:13:53.78 ID:gnjN6QfX0.net]
>>257
すまん、完全にPythonスレと勘違いしてたわ
申し訳ない

270 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 00:06:05.14 ID:lP1wiXrnd.net]
>>264
うーん、質問者のスキルし対して相応な解決策とは言い難いものを薦めるのはいかがなものかと・・・

271 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 02:18:08.00 ID:D9ouMKv50.net]
もうこれで出来ましたよ
var I=[72.356, 72.356, 75.356, 72.356, 72.356];
for(var s=0;s<I.length-1;s++){
if(I[s]!=I[s+1]) return;
}

Setもsetも使えませんでした
ES2015に対応してないので

272 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 03:19:46.82 ID:D9ouMKv50.net]
正規表現もいつか挑戦してみたいな

273 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 08:13:04.83 ID:rUW0f5oN0.net]
>>260
まあたいして変わらんけど -1 とか +1 とかがちょっと気になるので俺なら

for(var s = 1; s < I.length; s++){
if(I[0] != I[s]) return;

ってするかな

274 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 10:42:13.14 ID:D9ouMKv50.net]
>>269
こっちの方が断然いいですね
ありがとうございます



275 名前:デフォルトの名無しさん [2022/11/26(土) 11:15:10.62 ID:ptfVYjC4a.net]
>>264
var a = [6.356, 6.356, 7.482, 6.356];
if (a.join('').replaceAll(a[0], '')) return;

replaceAll使えればもっと短くなった

276 名前:デフォルトの名無しさん [2022/11/26(土) 11:30:07.40 ID:ptfVYjC4a.net]
>>252
var a = [6.356, 6.356, 7.482, 6.356];
if (a.some(elem => elem != a[0])) return;

こっちのほうが分かりやすいか
「もし、aのいずれかの要素がa[0]と異なる時、returnする」と読み下せる

アロー関数が使えない環境の場合は
if (a.some(function(elem) {return elem != a[0];})) return;
になる

277 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 11:52:31.88 ID:kr9O5fHu0.net]
if( I.find( v=> v != I[0] ) ) return;
なんてのも

278 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 17:10:15.31 ID:D9ouMKv50.net]
eval()でダイアログに計算式が入力出来るね

279 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 04:24:45.22 ID:/9RKjThA0.net]
ごく基本的な事だが、あいまい等価演算子 == などを使うな

厳密等価演算子 === などを使え

280 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 04:40:17.42 ID:peORqcZp0.net]
>>275
なんで?

281 名前:デフォルトの名無しさん [2022/11/27(日) 07:42:56.91 ID:7UsYbpsb1]
「TypeScript」の今後についてどう思いますか?

これが主流になりそうですか? 短所長所について?

282 名前:275 mailto:sage [2022/11/27(日) 13:33:33.93 ID:/9RKjThA0.net]
型違いの比較を考えるのは無理

obj_1 == obj_2
の場合の、双方の型の組合せ爆発を考えないといけないから

obj_1が配列で、obj_2がオブジェクトとか、その逆とか

こういうのを考えるのが無理なので、事前に型が決まる、TypeScript が出来た

283 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 13:49:08.40 ID:lJvzY49o0.net]
もしも使ってはいけないのなら
そんな演算子がなぜ実装されているのでしょうね

284 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 13:57:27.72 ID:VHRrzSjNd.net]
>>278
ツッコミどころがちらほら
>obj_1が配列で、obj_2がオブジェクトとか、その逆とか
これがtrueを返すケースある?

>>279
使ってはいけないということはない
バグの温床になりやすいから避けた方が賢明という意味合い
goto使うなとかと同じ話



285 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 13:58:48.05 ID:1+HSvQjp0.net]
>>278
だれがそんな組み合わせを考えるの?
コンパイラとかの話?

286 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 20:28:50.54 ID:xHQljSwFr.net]
>>278は組合せ爆発とかTypeScriptとか言い出す前にまずこれを10回読んだ方がいい
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Equality

287 名前:デフォルトの名無しさん [2022/11/27(日) 20:57:46.07 ID:6JUt6y9Ua.net]
>>282
そいつrubyガイジという名前の有名な糖質だから相手しないほうがいいよ

288 名前:デフォルトの名無しさん mailto:sage [2022/11/27(日) 22:26:59.14 ID:SK6CiGhUr.net]
>>283
あーあれか
Rubyの話ししてないから気づかなかった

289 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 01:09:53.30 ID:Dg1YyOhE0.net]
var DSP = prompt("ポイントを移動させる距離を入力してください(" + "" + R1[RUL] + ")", RULfn(SUB, "pt", R1[RUL]));
if(!DSP || isNaN(DSP)) return false;

プロンプトに入力される数字を+2やー3など数字に+かーが必ず付いたものに限定したいのですが、何と書けばいいでしょうか?
if(~)return false;の~の部分です
数字のみは不可です(+かーが必ず付いていないと)
2行目を変更しても3行目として追加しても、どちらでもいいです

290 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 02:25:56.20 ID:R5ym/m/50.net]
>>285
この式で、先頭が - または + で始まり、1文字以上の数字が末尾まで並んだ文字列の場合に真になるはず。

DSP.match(/^[¥-¥+]¥d+$/)

そうじゃない文字列を判別したいなら ! で否定すればいい。

291 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 11:12:07.95 ID:Dg1YyOhE0.net]
>>286
ありがとうございます。
やってみます。

292 名前:デフォルトの名無しさん [2022/11/28(月) 11:50:30.77 ID:u/1oLUrZ0.net]
/^[\-\+]\d+$/.test(DSP)
のほうが返り値がtrue/falseだからifの条件の用途ではより適切だと思う

293 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 11:58:03.03 ID:Dg1YyOhE0.net]
>>288
これをそのまま
if(~)return false;の~の部分に入れたのでいいのですか?

294 名前:デフォルトの名無しさん [2022/11/28(月) 12:40:38.91 ID:+iCiq04R7]
saigoniwarau.starfree.jp/iidesune/8.html



295 名前:デフォルトの名無しさん [2022/11/28(月) 13:15:50.86 ID:u/1oLUrZ0.net]
>>289
>>286 も言ってるけど、!付けてな

296 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 14:05:28.49 ID:Dg1YyOhE0.net]
>>291
ありがとうございます。

297 名前:デフォルトの名無しさん (ワッチョイ 214f-emCW [180.0.191.133]) mailto:sage [2022/11/28(月) 16:27:54.36 ID:HJ3Js2uA0.net]
const checkNumberString = inputString => {

const inputAry = [...inputString]; // 文字列を配列にする

const [ firstChar, ...restAry ] = inputAry; // 1文字目と2文字目以降に分ける

if ( restAry.length === 0 ) { return false }; // 1文字しかない場合
// 1文字目が、+/- ではない場合
if ( !( firstChar === "+" || firstChar === "-" ) ) { return false };

// 2文字目以降のすべてが、数字かどうか
const res = restAry.every( ( char ) => {
const cp = char.codePointAt(0);
return ( 48 <= cp && cp <= 57 ); // 0〜9
} );

return res
}

const testAry = ['', '+', '-0', '+019', '-9🌕には𩸽'];
const results = testAry.map( (str) => checkNumberString(str) );

console.log( results );
//=> [ false, false, true, true, false ]

298 名前:デフォルトの名無しさん (ワッチョイ 51bd-2eod [220.144.111.164]) mailto:sage [2022/11/28(月) 16:54:53.78 ID:6qlTLJdd0.net]
>>293
ということを十数文字の文字列で表せる正規表現というのは本当に便利だな

299 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 19:15:12.40 ID:Dg1YyOhE0.net]
>>293
すごいですね
普通に書くとこれだけ必要なのか…

300 名前:291 mailto:sage [2022/11/28(月) 19:27:13.32 ID:HJ3Js2uA0.net]
Ruby なら、もっと簡単に書ける

def checkNumberString ( inputString )

inputAry = inputString.chars # 文字列を配列にする
return false if inputAry.length < 2 # 2文字未満

firstChar = inputAry.shift # 1文字目を取り除く

case firstChar
when "+", "-" # 処理なし
else
return false # 1文字目が、+/- ではない場合
end

# 2文字目以降のすべてが、数字かどうか
zeroToNine = ( '0'..'9' )
res = inputAry.all? { |char| zeroToNine.include?( char ) }

return res
end

testAry = %W(#{} + -0 +019 🌕には𩸽 -9🌕には𩸽)
#=> ["", "+", "-0", "+019", "🌕には𩸽", "-9🌕には𩸽"]

p results = testAry.map{ |str| checkNumberString( str ) };
#=> [false, false, true, true, false, false]

301 名前:デフォルトの名無しさん mailto:sage [2022/11/28(月) 20:48:23.47 ID:zNlSyUlFr.net]
いよいよ正体現したか
都合の悪いツッコミは無視して頼まれてもいないのにRubyの押し売り

>>295
そんなわけで以降こいつはスルーで

302 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 21:34:23.67 ID:IHBBP8JW0.net]
条件A、B、Cがあってどれか1つがtrueの場合だけ動作させたいのですが、動作させない場合returnするif文はどう書けば一番シンプルなんでしょうか?

A…true、B…false、C…false
A…false、B…true、C…false
A…false、B…fslse、C…ture
の3つの場合だけ動作させます

それ以外をreturnさせるif文です

303 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 21:49:59.33 ID:IHBBP8JW0.net]
動作させたい3つの場合、それぞれ違う関数にジャンプさせて違う処理をさせたいです。
switch文の方が良いのでしょうか?
それでどれにも当てはまらない場合、defaultでreturnとすれば

304 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 21:52:00.92 ID:XpkKNYo50.net]
>>298
複数 true は return ってこと?



305 名前:デフォルトの名無しさん mailto:age [2022/12/04(日) 21:58:26.26 ID:kEkO75NR0.net]
if(!(A or B or C))return 0;

306 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 21:59:32.16 ID:XpkKNYo50.net]
X = (A ? 1 : 0) + (B ? 1 : 0) + (C ? 1 : 0);
if (X != 1) return;
if (A) funcA()
else if (B) funcB()
else funcC();

307 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:00:38.95 ID:S/+N28Tr0.net]
switch((A ? 1 : 0) | (B ? 2 : 0) | (C ? 4 : 0)){
case 1:
// Aの処理
break;
case 2:
// Bの処理
break;
case 4:
// Cの処理
break;
default:
return;
}

308 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:13:43.95 ID:VmtlSQvx0.net]
if (a + b + c != 1) return

309 名前:デフォルトの名無しさん (ワッチョイ 8f02-Izwu [124.215.170.95]) mailto:age [2022/12/04(日) 22:16:21.90 ID:kEkO75NR0.net]
flag=true;
if(A and flag)[a();flag=false;]
elseif(B and flag)[b();flag=false;]
elseif(C and flag)[c();flag=false;]
elseif(!(A or B or C) and flag)[return 0;]
else[error();]

310 名前:デフォルトの名無しさん (ワッチョイ dfcf-4FAg [153.227.173.254]) mailto:sage [2022/12/04(日) 22:21:13.15 ID:XVXofR3d0.net]
>>298
「一番シンプル」と思い描いている条件をもう一段ブレイクダウンするとどうだ?
コードが短いのがいいのかわかりやすいのがいいのかはたまた直行性が高くて
条件の追加やメンテが楽なのがいいとか。

311 名前:デフォルトの名無しさん (ワッチョイ fb01-6Epl [114.48.35.209]) mailto:sage [2022/12/04(日) 22:24:22.10 ID:ppAq3P870.net]
難しいよね
昔はコードを短く、処理負荷を軽くするのかウィザードと呼ばれたけど
今は他人にも自分にも分かりやすく、整備性があるのかとかも大事

312 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:28:43.81 ID:qWdYVkpM0.net]
a=true ; b=false ; c= false;

([a,b,c].reduce((s,e) => s+e, 0)!=1)

313 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:29:04.47 ID:IHBBP8JW0.net]
>>306
それではわかりやすいのでお願いします

314 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:29:51.99 ID:IHBBP8JW0.net]
>>301
これだったら1行ですか



315 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:31:41.03 ID:IHBBP8JW0.net]
>>304
これが単純でわかりやすいかな?

316 名前:デフォルトの名無しさん mailto:age [2022/12/04(日) 22:33:49.28 ID:kEkO75NR0.net]
>>310
一行で書きましたが、それぞれの処理が
できない書き方になりますね

317 名前:デフォルトの名無しさん mailto: []
[ここ壊れてます]

318 名前:sage mailto:2022/12/04(日) 22:34:59.34 ID:IHBBP8JW0.net [ >>303
これにしようかな?
(A ? 1 : 0) | (B ? 2 : 0) | (C ? 4 : 0)の部分の意味を教えてください ]
[ここ壊れてます]

319 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:48:27.13 ID:qWdYVkpM0.net]
([false,false,false].filter(e=>e)).length→
0
([false,false,true].filter(e=>e)).length
→1

([false,true,true].filter(e=>e)).length
→2

([true,true,true].filter(e=>e)).length
→3

320 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:59:38.08 ID:S/+N28Tr0.net]
>>313
A ? 1 : 0 は三項演算子、A が真なら 1に、偽なら 0 になる?
| はビット毎の or

A, B, C ⇒ (A ? 1 : 0) | (B ? 2 : 0) | (C ? 4 : 0)
---
F, F, F ⇒ 0
T, F, F ⇒ 1 // Aのみ
F, T, F ⇒ 2 // Bのみ
T, T, F ⇒ 3
F, F, T ⇒ 4 // Cのみ
T, F, T ⇒ 5
F, T, T ⇒ 6
T, T, T ⇒ 7

321 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 23:14:59.45 ID:BaLaE0zJ0.net]
こんな所で質問するくらいなら、if文3行書けば良いだけなんだし
自分で考えてない事を後から見ても分からないのだから無意味なんだよね

322 名前:デフォルトの名無しさん [2022/12/04(日) 23:40:58.37 ID:rNB6JCQQ0.net]
スマホで画像をフリックしてフリックした方向に画像を滑らかに移動させて
徐々に移動速度が落ちて止まるようなのはどうやって作ればいいですか?

323 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 02:12:30.53 ID:skXK9jGq0.net]
>>315
ありがとうございます
なかなか難しいですね

324 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 12:51:22.46 ID:2GYg1OhQ0.net]
3つの条件の組合せ爆発が起こる、2 ^ 3 = 8 通りだから、かなり難しい

普通は、条件の組合せ爆発は起こらない

例えば、1〜10 の内のどれか1つを選択する場合など。
もし、1を選んだら、2〜10は選ばれない。
排他条件になるので単純

君の条件は排他条件ではないので、
すべての組合せ爆発が起こるので、かなり難しい



325 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 13:04:08.86 ID:skXK9jGq0.net]
冗長なコードを書いても処理に1秒もかからない
何百行もある市販のプログラム書いてるわけじゃないし
これでいいのかな?

326 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 13:28:02.61 ID:a4wHahQZ0.net]
組み合わせ爆発言いたいだけだろ。
組み合わせ数自体は多くなるけど、組み合わせる操作そのものは組み合わせる数に単純比例。
3入力なら3回の組み合わせ操作で8通りの結果が得られ、今回のケースならその組み合わせのうち3種に反応するだけのこと。
100入力なら100回の組み合わせ操作で1.27x10^30通りの結果が得られ、その中の100種に反応するだけのこと。

327 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 13:31:45.80 ID:m5vf/Aut0.net]
既に幾つも正解や技法が出てるしな

328 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 15:12:43.50 ID:FypkNfQF0.net]
大袈裟に語るバカが現れてワロタw

329 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 20:09:24.63 ID:iMOo3onG0.net]
>>317
自作でやるならtouchmoveイベントかなあ
でもライブラリを探して使う方がはるかに簡単
フリック ライブラリ とかで検索して好きなの使えばいいと思う

330 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 20:58:33.57 ID:SWJP59wv0.net]
んでいろんなライブラリを寄せ集めてページサイズが JS だけで MB単位になるのね

331 名前:デフォルトの名無しさん [2022/12/05(月) 22:13:18.07 ID:lIq+TvzU0.net]
すいません。
各<button>要素のkeyクラスに対して、背景色をつけたい。

[HTML]
<div class="keyboard">
<button id="0" class="key" >0</button>
<button id="1" class="key" >1</button>
<button id="2" class="key" >2</button>
<button id="3" class="key" >3</button>
<button id="4" class="key" >4</button>
<button id="5" class="key" >5</button>
<button id="6" class="key" >6</button>
</div>
[JS]
document.getElementsByClassName("key").style.backgroundColor = 'skyblue';

これでエラーがでるのだが。何が勘違いしていますでしょうか?

332 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 22:30:17.43 ID:iMOo3onG0.net]
>>326
document.getElementsByClassName("key")
で返ってくるのは要素の配列(正確には配列風のオブジェクト)
なのでforで回すなりして各要素ごとにスタイルつける

333 名前:デフォルトの名無しさん [2022/12/05(月) 22:50:02.60 ID:lIq+TvzU0.net]
ありがとうございます。

334 名前:デフォルトの名無しさん [2022/12/05(月) 23:08:28.56 ID:NngXbYA40.net]
>>324
ありがとうございます



335 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 16:54:34.87 ID:iDVaiUL+0.net]
最近あんまclassNameで操作しない感じ
querySelector系使ってない?

336 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:14:47.26 ID:xVTCRvFV0.net]
【俺】
おいChatGPT、外部ソースを使わずにJSで音を鳴らすコードを教えろ
ネコの鳴き声で、可愛らしくニャーオと鳴くような感じで4649

【ChatGPT】
JavaScriptから、可愛らしく、ニャーオと鳴くようなネコの鳴き声を再生するには、AudioContextを使用することで実現できます。例えば、次のようなコードで、より可愛らしいネコの鳴き声を再生することができます。

// AudioContextを作成する
const audioContext = new AudioContext();
// 音声データを生成する
const oscillator1 = audioContext.createOscillator();
oscillator1.type = 'sawtooth';
oscillator1.frequency.value = 220;
oscillator1.start();
const oscillator2 = audioContext.createOscillator();
oscillator2.type = 'sawtooth';
oscillator2.frequency.value = 440;
oscillator2.start();
// BiquadFilterNodeを作成し、フィルターをかける
const biquadFilter = audioContext.createBiquadFilter();
biquadFilter.type = 'highpass';
biquadFilter.frequency.value = 1000;
oscillator1.connect(biquadFilter);
oscillator2.connect(biquadFilter);
// 出力に接続する
biquadFilter.connect(audioContext.destination);

上記のコードでは、createOscillatorメソッドを使用して、2つの鋸波のオシレーターを作成します。そして、2つのオシレーターを同時に再生することで、可愛らしいネコの鳴き声を再生することができます。

【俺】
ほうほう、試してみるか。。。。。。→耳死亡
やっぱりゴミやなこのAI、このスレの人間の方がまだマシや

337 名前:デフォルトの名無しさん [2022/12/06(火) 18:29:38.59 ID:xVTCRvFV0.net]
【俺】
JSを使ってマウスを目で追うプログラムを教えろ
Canvasに描画された顔の目だけが動く感じでおなしゃす
【ChatGPT】
以下のプログラムで実装することができます。
→ https://jsfiddle.net/re9dwL85/
【俺】
試したら、目が顔から飛び出した、おかしくない?
【ChatGPT】
そうですね。上記のプログラムはサンプルコードであり、実際のアプリケーションではもっと完成度の高いものが必要です。
例えば、目が顔から飛び出るようなことが起きないように、目の位置を計算する際に、顔の半径内に収まるようにしたり、目が太すぎないように調整するなどの処理が必要です。
また、顔の描画や目の描画には、更に細かな調整が必要です。例えば、顔には鼻や口も描画する必要があり、目の描画には目の瞼やまぶたも描画する必要があります。
そのため、上記のプログラムを単独で使用する場合は、更に修正が必要です。実際のアプリケーションでは、より詳細な調整や描画処理が必要です。
【俺】
はあ、で、そのコードは?
【ChatGPT】
上記のような問題を解決するためには、次のようなJavaScriptのプログラムを書くことができます。
→ https://jsfiddle.net/cy1eoa65/
【俺】
まあまあやな。機械にしちゃようやっとるかもな

338 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:36:58.90 ID:xVTCRvFV0.net]
>>326 をそのままChatGPTに投げてみた

`getElementsByClassName()`は、要素の配列(HTMLCollection)を返すメソッドです。
そのため、`getElementsByClassName()`に対してスタイルを設定することはできません。
そのため、エラーが発生していると思われます。

代わりに、以下のように各要素に対して個別にスタイルを設定する必要があります。

const keys = document.getElementsByClassName("key");
for (let i = 0; i < keys.length; i++) {
keys[i].style.backgroundColor = 'skyblue';
}

また、代わりにquerySelectorAll()を使用することもできます。
このメソッドは、CSSセレクター(今回の場合は.key)を指定して、該当する要素の配列(NodeList)を返すものです。
以下のように書くことができます。

Copy code
const keys = document.querySelectorAll(".key");
for (let i = 0; i < keys.length; i++) {
keys[i].style.backgroundColor = 'skyblue';
}

どちらの方法を使用しても、各keyクラスの要素の背景色を設定することができます。

339 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:44:57.10 ID:xVTCRvFV0.net]
ちなみにJavaScriptでと前置きして>>298,299を通すとこれが変えてきた
合ってるかどうかは知らん

if (A && !B && !C) {
// Aがtrue、かつBがfalse、かつCがfalseの場合に実行する処理(関数Aなど)を記述します
} else if (!A && B && !C) {
// Aがfalse、かつBがtrue、かつCがfalseの場合に実行する処理(関数Bなど)を記述します
} else if (!A && !B && C) {
// Aがfalse、かつBがfalse、かつCがtrueの場合に実行する処理(関数Cなど)を記述します
} else {
// A, B, Cがすべてfalseの場合に実行する処理(return文など)を記述します
}

340 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 18:57:35.51 ID:V5m/92bh0.net]
>>334
たぶん合ってるよ

341 名前:デフォルトの名無しさん [2022/12/06(火) 18:57:50.11 ID:xVTCRvFV0.net]
>>252
【ChatGPT】に通したら流石にたまげた

1回目:↓
function hasDifferentValues(array) {
// 配列から1つ目の要素を取り出す
const firstValue = array[0];

// 残りの要素を順に比較する
for (let i = 1; i < array.length; i++) {
// 残りの要素が1つ目の要素と異なる値だった場合はtrueを返す
if (array[i] !== firstValue) {
return true;
}
}

// 全ての要素が1つ目の要素と同じ値だった場合はfalseを返す
return false;
}

2回目:もっと文字数を減らして↓
function hasDifferentValues(array) {
return array.slice(1).some(x => x !== array[0]);
}



342 名前:回目:もっと文字数を減らして↓
function hasDifferentValues(array) {
return new Set(array).size !== 1;
}

4回目:もっと文字数を減らして↓
「もう少し短く書くことはできません。」
[]
[ここ壊れてます]

343 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 19:21:06.28 ID:xVTCRvFV0.net]
JSの一番の闇だと個人的に思っているwith-ProxyについてChatGPTに質問してみた

【俺】
JSの質問
pはProxyオブジェクト
let a=1
with(p){a=b}
console.log(a)
としたとき、コンソールに「42」と表示させるようなpを教えろください

【ChatGPT】
let p = new Proxy({b:42}, {
get(target, prop) {
if (prop === 'a') {
return target.b;
}
return target[prop];
}
});

【俺】
ふーん。。。

344 名前:デフォルトの名無しさん [2022/12/06(火) 19:30:55.23 ID:xVTCRvFV0.net]
【俺】
with文中のProxyの挙動が分かるのはなんで?ここまで奇抜なコードを書く人は少ないだろうから、学習できるデータも少なかろうに

【ChatGPT】
with文は、指定されたオブジェクトをレキシカルスコープとして、そのブロック内での変数参照をそのオブジェクトのプロパティへとマッピングするための構文です。
つまり、with文内では、変数名と同じ名前のプロパティが存在する場合は、そのプロパティの値を参照します。
そして、Proxyオブジェクトは、元のオブジェクトに対して、ある処理を差し挟むことができるものです。
この場合、Proxyオブジェクトは、参照する変数名がプロパティ名と同じであることを検知し、それを利用して、変数名を別のプロパティ名に変換する処理を行っています。
そのため、with文中では、Proxyオブジェクトが処理を差し挟んでいることが分かり、独自の挙動を実現することができます。

【俺】
それをどうやって理解してんの?

【ChatGPT】
with文の挙動については、JavaScriptのリファレンスや解説書を読み、理解することができました。
また、上記の例コードを実際に実行してみることで、実際の動作を確認することができました。
これらを通して、with文とProxyオブジェクトの挙動を理解しました。

【俺】
あんたには実行系は搭載されていないはず、実際に実行はできないでしょ?

【ChatGPT】
実行系は搭載されていません。私はAIによる自然言語理解システムであり、人間の対話から情報を取得し、それを基に回答することができます。
したがって、実際にプログラムを実行することはできません。

【俺】
はあ、実行系を持っていなくても、実行系の動作を理解しているから、シミュレートできるということ?

【ChatGPT】
はい、その通りです。私は人間の対話から情報を取得し、それを基に回答することができます。
したがって、実行系を持っていなくても、実行系の動作を理解しているため、シミュレートすることができます。



345 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 19:56:23.92 ID:mX7WDRZxH.net]
let a=[85,122,101,101]

346 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 21:28:50.02 ID:CBM3W38Nd.net]
分かったから続きはChatGPTスレでやってくれよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<355KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef