[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
上下前次1-新
抽出解除 レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
587(3): デフォルトの名無しさん (ワッチョイ 3f3d-/16g [133.32.132.49 [上級国民]]) [sage] 2023/01/15(日) 15:02:28.33 ID:yvxMece60(1/2) AAS
よろしくお願いします
【環境】Win11,Chrome
【何をしたのか】下記コードをHTMLファイルにしてchromeで読み込ませて、コンソールで見た
JSONのItemsを一個追加して、追加したageだけ書き換えたいが、両方書き換わる
【エラーメッセージ】エラーメッセージはない
【期待する結果】Itemsの2個めのageだけが40になるはず
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
<script>
json =
{
"color_list": [ "red", "green", "blue" ],
"Items": [
{ "name": "Tanaka", "age": 26 },
]
}
data0=json["Items"][0]
json["Items"].push(data0)
console.log("before");
console.log(json["Items"][0]["age"]);
console.log(json["Items"][1]["age"]);
json["Items"][1]["age"]=40
console.log("after");
console.log(json["Items"][0]["age"]);
console.log(json["Items"][1]["age"]);
</script>
結果
before
26
26
after
40
40
590: デフォルトの名無しさん (ワッチョイ 3f3d-/16g [133.32.132.49 [上級国民]]) [sage] 2023/01/15(日) 15:22:38.08 ID:yvxMece60(2/2) AAS
>>588,589できましたありがとうございます。
627(1): デフォルトの名無しさん (ワッチョイ bf3d-Sc6R [133.32.132.49 [上級国民]]) [sage] 2023/01/26(木) 00:31:01.01 ID:c9Kzf+f60(1/2) AAS
【環境】Win11,Chromeで表示させたHTMLの中のjavascript
Windowsのフルパスのファイル名が入った変数を\でsplitしたいんだけど可能?
x_textにはJSONデータから取ってきた'D:\\00.png'が入っていて
console.log(x_text)だとD:\00.pngと表示
これをsplitすると
aaa1.html:154 Uncaught TypeError: Assignment to constant variable.
になる。
split('\\')をsplit('\\\\')にしても同じ
console.log(x_text)
arr_text = x_text.split('\\') ←ここでエラー
console.log(arr_text[0])
629: デフォルトの名無しさん (ワッチョイ bf3d-Sc6R [133.32.132.49 [上級国民]]) [sage] 2023/01/26(木) 01:06:05.60 ID:c9Kzf+f60(2/2) AAS
>>628できました。
サンクスです。
647(2): デフォルトの名無しさん (ワッチョイ fa3d-FCAK [133.32.132.49 [上級国民]]) [sage] 2023/02/24(金) 01:21:32.26 ID:jGK2BMhd0(1) AAS
//【環境】Win11,JScript
//【何をしたのか】case文のところに条件式を書き、breakせずにすべての条件式で評価したい
//【サンプルコード】現象を再現可能な最小限のコードを書いてください。
a=1
switch (true) {
case (a==1):
a=a+16
WScript.echo("aの値を変更a=",a)
case (a>10):
WScript.echo("a>10","a=",a)
a=a-10
WScript.echo("aの値を変更a=",a)
case (a>30):
WScript.echo("a>30です","a=",a)
a=0
WScript.echo("aの値を変更a=",a)
}
WScript.echo("最終的な結果a=",a)
//【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
aの値を変更a= 17
a>10 a= 17
aの値を変更a= 7
a>30です a= 7
aの値を変更a= 0
最終的な結果a= 0
//【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
2番目のcaseでa=7だから3番目のcaseにはいかず、最終的にはa=7になるのでは?
651: デフォルトの名無しさん (ワッチョイ 433d-KeBY [133.32.132.49 [上級国民]]) [sage] 2023/02/25(土) 02:30:10.34 ID:E1i3tKVi0(1) AAS
>>650650(1): デフォルトの名無しさん (ワッチョイ 9ebd-kyjD [119.240.41.213]) [sage] 2023/02/24(金) 08:59:59.37 ID:thXJapXb0(2/2) AAS
>>649
case に式を書けるようにしたことによって使えるようになった副作用みたいなものだよね。
switch の式と一致する case を探すのが switch文の動作だとするなら、switch の式 true と一致する値となる、すなわち true になる式を持つ case が選択される。
個人的には if で書けばいいものをわざわざ分かりづらい書き方にしてるバッドプラクティスだと思ってるが、フォールスルーと組み合わせると if よりもスマートに書ける可能性はあるかもね。
特に >>647 のように全部の case を評価してほしいなら、switch で書く利点が何一つ無い。
if より利点がある場合は、フォールスルーする場合に最初に true になる case までしか式が評価されないことくらいなのに。
良いサンプルが思いつかんけど、
ifで書こうとすると、重複する処理を書かなければいけなくなったり、フラグの変数を導入したりすることになるんだけど、
breakなしのswitch case文ならうまいこと書けるんじゃないかと思ってやってみたけど、動かなかった。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.040s