X



+ JavaScript の質問用スレッド vol.123 + [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ efff-U/Pn [183.76.238.232])
垢版 |
2017/04/02(日) 23:30:38.56ID:Qcd0Qmy10
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください

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

※前スレ
+ JavaScript の質問用スレッド vol.122 +
http://echo.2ch.net/test/read.cgi/tech/1472426483/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured
0282デフォルトの名無しさん (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 10:58:53.79ID:asjsDRkW0
sort関数に追加の引数を渡すことってできますか?
array.sort(mySort())に引数を与えて条件によって処理を変えたいのですが。

普通にmySort()に引数を入れるとソートで使われる引数に値が入ってしまってダメでした。
0284282 (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 11:48:53.44ID:asjsDRkW0
ありがとうございます。
新しいjsでは大丈夫でしたが、ES3という超古いバージョンなのです。
書き忘れていました。後出しで申し訳ありません。
(アドビのソフトで使われているjsです)
0287282 (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 13:05:25.23ID:asjsDRkW0
>>285
ちょっと自分のスキルでは難しそうです。
0289デフォルトの名無しさん (オッペケ Srcb-D9NN [126.208.250.170])
垢版 |
2020/10/14(水) 13:53:20.67ID:z5/Y8RhDr
ソート関数なんて自前で作ればいい
0291282 (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 14:10:27.29ID:asjsDRkW0
returnの挙動はともかく、
mySort(value)自体がES3だとできないのです。(aにvalueが入ってしまう)
とりあえず今はグローバル変数で対応していますが、
引数でやる方法がないのかと思いまして。
0292デフォルトの名無しさん (ワッチョイ 97d2-f5T3 [124.103.45.183])
垢版 |
2020/10/14(水) 16:00:56.30ID:zqMcknRo0
比較関数はどうやって指定しているんですか?
0294282 (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 17:08:39.53ID:asjsDRkW0
>>293
今やってることは大雑把には以下の通りで、
mySortにa,b以外の値cを渡してそれを元に処理を追加したいのですが
cの渡し方がわかりません。
var ary=[10,12,53,41,5,6,];
ary.sort(mySort);
function mySort(a,b){
return a-b;
}
0296282 (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 17:28:28.99ID:asjsDRkW0
ありがとうございます。まさに希望どおりです。
こんな書き方もできるんですね。
0298デフォルトの名無しさん (アウアウクー MM49-1tAR [36.11.229.191])
垢版 |
2020/10/24(土) 02:35:59.30ID:gS1xqNx8M
質問させてください。

nodejsで line botを作っていて応答文字に改行を入れたいのですが
ダブルクォートで囲った中に”\n”で改行するという仕様のようなのです。



return client.replyMessage(ev.replyToken, {
type: "text",
text: “あああ\nいいい”
});

しかし今作っているbotは文字列を変数に格納しており

const aaa = スクレイピングで拾ってきた文字列
const bbb = スクレイピングで拾ってきた文字列

const ccc = aaa + “\n” + bob

return client.replyMessage(ev.replyToken, {
type: "text",
text: ccc
});

では改行されませんでした。
text: `${ccc}` でもダメでした。

\nがそのまま表示されてしまいます。

ダブルクオートで囲い直す方法ってございませんでしょうか?
よろしくお願い致します。
0304デフォルトの名無しさん
垢版 |
2020/11/24(火) 13:11:50.94ID:FWk6XcjL
function hoge(){} //引数なし
hoge(a=11,b=33)
名前付き引数を可変的に追加できて
関数hoge側でkey(aとb)名も受け取れるようにしたいんだけど無理?
argumentsはkey名は無視されたし
hoge({a=1,b=3})で関数内でfor key in objみたいにするしかないのかな
0308デフォルトの名無しさん
垢版 |
2020/11/25(水) 16:45:55.85ID:UPK+j49C
>>307
端的にいうと
引数は
hoge(x=1,y=2,a="ho",b="ge")
hoge(z=2,x="abc")
みたいに指定できて
{x:1,y:2,a:"ho",b:"ge"}や{z:2,x:"abc"}
みたいに関数で受け取りたい
(もちろんx,yやa,b,cみたいなkey名はこれに限らず)
0311デフォルトの名無しさん
垢版 |
2020/11/25(水) 17:52:06.24ID:UPK+j49C
>>309
なるほど
他の言語だとこういう書き方があったのでもしかしたらJSにもあるのかなとおもったのですがないのですね
ありやした

>>310
それはもちろん
しかしそれだとそもそも{}表記なんで
0312デフォルトの名無しさん (ワッチョイ 194e-U2xp [210.138.216.243])
垢版 |
2020/11/25(水) 19:21:16.56ID:zD7zhP2P0
>>311
あーそうゆうことね。
()呼び出しでなくタグ付きテンプレート呼び出し、
eval使っていいなら、

function hoge(s) {
let o={},p=new Proxy(o,{set:(o,p,v)=>(o[p]=v,!0),has:()=>!0});
eval(`with(p){${s[0]}}`)

console.log(o);
}

hoge`x=1,y=2,a="ho",b="ge"`
//=> {x: 1, y: 2, a: "ho", b: "ge"}
0315デフォルトの名無しさん (ワッチョイ 33bd-W+Es [133.200.2.96])
垢版 |
2020/11/25(水) 21:38:45.31ID:3CNxpkun0
const hoge = [{id:"xxx",
num:5000},
{id:"yyy",
num:2000},
{id:"zzz",
num:9000},]

こういう配列でnumが一番大きいobjectを取得するシンプルな方法ってありますか?
思いついたのは
const foo = hoge.find((i)=>{
return i.num === Math.max(...hoge.map((v) =>{
return v.num
}))
})
なんですけどこれだけの処理に二重でループ回すのはナンセンスな気がしてしまって・・・
0319デフォルトの名無しさん (ワッチョイ 194e-U2xp [210.138.216.243])
垢版 |
2020/11/25(水) 22:14:27.47ID:zD7zhP2P0
const foo = hoge.sort((a, b) => a.num - b.num).pop()
とか
const foo = hoge.sort((a, b) => b.num - a.num)[0]
とか。
しかし両者ともhogeを書き換えてしまうので、
const foo = [...hoge].sort((a, b) => a.num - b.num).pop()
とか
const foo = [...hoge].sort((a, b) => b.num - a.num)[0]
のほうが望みのものかもね。
あとは
const foo = hoge.reduce((acc, r) => r.num > acc.num ? r : acc)
とか。
0321デフォルトの名無しさん (ワッチョイ 194e-U2xp [210.138.216.243])
垢版 |
2020/11/25(水) 22:29:12.37ID:zD7zhP2P0
>>318
> numは存在しない場合もありました

このような後出し要件の場合は、安全なアクセス関数を追加で用意して差し込むのが簡単。
例えば、
const getNumSafe = ({num = -Infinity}) => num
const foo = hoge.reduce((acc, r) => getNumSafe(r) > getNumSafe(acc) ? r : acc)
のように。
0328デフォルトの名無しさん (ワッチョイ 53f0-P4WK [115.65.191.12])
垢版 |
2020/11/30(月) 16:28:41.73ID:gpUfY6cE0
動的型付け言語って本当にわかりづらい

javascriptでオブジェクト指向的なプログラムを組もうと思って
簡単な本でjavascriptを勉強してるんだけど
interfaceないのにどうやってオブジェクト指向的な開発してるんですか?
typescriptしたほうがいいんだろうか?
0336デフォルトの名無しさん (アウアウカー Sa6d-T9pK [182.251.184.232])
垢版 |
2020/11/30(月) 23:43:04.66ID:TJ10WaD1a
独学におすすめの本はありますか?
プログラム自体はphpの基礎ができる程度です
0339デフォルトの名無しさん (ワッチョイ 53f0-P4WK [115.65.191.12])
垢版 |
2020/12/01(火) 10:44:14.97ID:L1BkVMXS0
javascriptって面白い挙動するんだね
class s{
constructor(){
this.s1="s1";
let .s2="s2";
alert(); }// ---@
alert(){window.alert();}} //---A

new s();
-------------------
@を
alert(s1) ×
alert(this.s1) 〇
alert(s2)  〇
alert(this.s2) ×
と、Aで引数を受け取らなくてもalertで値が表示される

@alert(s2)とし
Aalert(){window.alert(this.s1):}
とすると、s2がalertされるし

@alert()とし
Aalert(){window.alert(this.s1):}
とするとalertには何も表示されない
とても不可思議な挙動
0341デフォルトの名無しさん (ワッチョイ 592c-OOND [114.144.98.145])
垢版 |
2020/12/01(火) 12:07:45.77ID:WP+WGTcn0
>>336
プロ向きなら、サイの表紙の2冊のサイ本

初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017
JavaScript 第6版、2012、David Flanagan

ただし、これらは、Google などの開発者が読む、プロ向きの本。
最低でも、Ruby は出来ないと、難しすぎて読めないと思う

JavaScript は、言語仕様が肥大化してる。
Rubyみたいに、簡単には学べないから、適当にお茶を濁した方がよい。
キリがない
0342デフォルトの名無しさん (オッペケ Sr1d-kvF8 [126.133.193.52])
垢版 |
2020/12/01(火) 13:31:02.54ID:53WLqSe7r
>>341
> ただし、これらは、Google などの開発者が読む、プロ向きの本。

さすがにこれは嘘
Ruby知らない俺でも読めた

ES2020などの最新仕様に対応した和書がないのは認める
日本語に拘らなければある(>>338)し、概ね日本人著者よりも英語圏の著者が優秀
0344333 (ワッチョイ dff0-jrSk [115.65.191.12])
垢版 |
2020/12/02(水) 10:31:40.93ID:B0C6cOGW0
javascriptの挙動を確認したいので
本体が何処にあるか調べてるのですが不明です
javascript本体はどこにあるのでしょうか?
0347デフォルトの名無しさん (ワッチョイ f34e-2/bE [210.138.216.243])
垢版 |
2020/12/02(水) 14:00:48.75ID:s/Tj40p50
「javascript本体はどこにあるのか」か。
ちょっと哲学的な問いだな。
俺としては、「Ecma International にある」説を推したい。
しかし物理的実体があるわけではないので Ecma International 本部があるジュネーヴにはない。
0352デフォルトの名無しさん (ワッチョイ dff0-jrSk [115.65.191.12])
垢版 |
2020/12/04(金) 15:48:35.50ID:Q52RE+DV0
書き込み不可でした
質問の仕方が悪くてすみません

javascriptが関数などをどう処理してるのかを知りたくて
javascriptのソースファイルを見たいなって思ってました
googleのchromeファイルを見てたんですけどちょっと分からなくて質問してみました

実際にはバイナリなりで読めない状態なのかもしれませんけど
所在だけでもしっておきたいなと
0359デフォルトの名無しさん (オッペケ Sraf-/AfY [126.133.193.52])
垢版 |
2020/12/04(金) 19:34:15.00ID:0LJPp7yer
>>357-358
変数値は再代入で変えられる

変数名はグローバル変数を除いて変更(元の名前を削除)出来ない
そもそも、変数名を変えようとするのは不具合の種になる
オブジェクトのプロパティやnew Mapのkey等、限られた空間で安全に変更するのが好ましい
0363デフォルトの名無しさん (アメ MMaf-oX+r [218.225.232.26])
垢版 |
2020/12/04(金) 21:02:15.15ID:8jcPt1TuM
JavaScriptの効率的な学習方法を教えて下さい

入門書のひらがなJavaScriptは終わりました。
次は、Progateか一つ上の書籍かと思っていますが、どの書籍にすべきか迷っています
0364デフォルトの名無しさん (ワッチョイ bf5c-3VNM [115.36.86.55])
垢版 |
2020/12/04(金) 23:49:00.70ID:73Qqn1aF0
山田何とかの著書一択
0365デフォルトの名無しさん (ワッチョイ 6f01-/AfY [126.3.33.117])
垢版 |
2020/12/05(土) 07:37:21.02ID:7XRe2Ndx0
>>363
> JavaScriptの効率的な学習方法を教えて下さい

目指している目標に依る

何かを作るだけならサンプルコードのコピペに行き着く人が多い

基礎から下積みするなら、一日でも早く仕様書を読めるようになる事が最も効率的なので、仕様書に近い書籍を選ぶ事になる
0367質問者 (スップ Sdbf-sakO [1.75.0.54])
垢版 |
2020/12/05(土) 07:57:03.24ID:wSoVmOU1d
目的は参照ボタンを選択してファイル選択ダイアログを開き、選択したローカルファイルの中を読む事です。
ただ、
<input type=`file`〜>で表示されたファイルパスを取得する事は出来ない(セキュリティ上)?
ローカルファイルを読むにはファイルパスが必要なので、どうすれば良いでしょうか?
すみませんよろしくお願いいたします。
0374367 (スップ Sdbf-sakO [1.75.0.54])
垢版 |
2020/12/05(土) 18:02:57.10ID:wSoVmOU1d
>>373

すみません。
ローカルファイルで読む為にフルパスが必要なんです。セキュリティの問題で取りにくいのは知ってます。それで
>>367
に書いた質問をしたのです。
よろしくお願いいたします。
0375367 (スップ Sdbf-sakO [1.75.0.54])
垢版 |
2020/12/05(土) 18:22:16.72ID:wSoVmOU1d
補足

すみません。
サブ画面ではファイルパスの設定だけ。
メイン画面ではじめて、サブ画面で設定したファイルを読み込むという事をしたいのですが、無理なのでしょうか?
よろしくお願いいたします。
0379367 (スップ Sdbf-sakO [1.75.0.54])
垢版 |
2020/12/05(土) 21:32:44.16ID:wSoVmOU1d
>>376

すみません。出来ないんですね。
設計者はサブ画面でファイル選択ダイアログを使用してexcelファイルを選択して、メイン画面でexcelファイルを取り込む事をやりたいんでしょうが、無理なんですね。設計者に言います。

それにしても、
POI技術で
https://blog.java-reference.com/poi-read-excel/
最初に
�is = new FileInputStream("D:�sample.xlsx");
パスを指定してますが、これは一般的には固定のローカルファイルパスを指定するもんなんですね。

>>377
ありがとうございます。調べてみます。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況