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

■ このスレッドは過去ログ倉庫に格納されています
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
220デフォルトの名無しさん (ワッチョイ 8f02-Y96Y [114.16.82.189])
垢版 |
2020/03/01(日) 13:30:18.22ID:SX/qa6HC0
ブラウザ側JavaScriptで
簡単にsync化する方法ありますか?
オブジェクト指向化が難しすぎる。
非同期メソッドをクラス内で使った時に
this(このインスタンス的な意味で)を
参照するのが難しすぎます。
2020/03/01(日) 22:59:36.40ID:NSpMdQYF0
非同期は、文脈(コンテキスト)が異なるから、
this とか、例外もキャッチできないだろ

非同期を同期的に書けるのは、async, await。
ちょっと前は、promise だった

JavaScript の質問は、この板ではなくて、web制作管理板の方へ書き込んでください!
この板のスレは以前、荒らしが出たときに、緊急避難用に立てたものだから
2020/04/15(水) 05:54:30.29ID:+ql6+04R0
windowを新規オープンしてから、SetIntervalで60秒に一回関数を呼んで異なるURLに遷移させているのですが、どうも上手く動きません
Windows7 FireFox 7.5.0 64bit

メイン
winObject = window.open("about:blank", "_blank","");
winObject.location.href = "https://www,google.com/";; ← ここまでは動く

https://blog.hello-world.jp.net/javascript/3822/
こういう記事をみつけたんで、(iOS9じゃないけどだめもとで)インターバルで呼ぶ関数内の記述を
winObject.location.href = url;
から
setTimeout(function() { // 次のイベントループで処理
winObject.location.href = url;
}, 100);
にしてみたところ、chromeでは動くようになったもののFireFoxでは動かず

JavaScriptは初心者なもんで、こっちの記述が悪いのかどうかFireFoxが悪いのか判断できず
どうなんでしょう?
2020/04/15(水) 07:07:58.29ID:OHQRQza90
ユーザインタラクション以外から触って効くんだっけ?
2020/04/15(水) 17:04:32.41ID:RzJA8PqV0
Firefox75以降のバグのような気はするけど同一オリジンでなくなった時点でlocation効かなくなるな
2020/04/16(木) 10:08:39.40ID:s+KHkjW/0
>>224
FireFoxなんですかね
FireFoxのちょっと前のバージョンだと、遷移部分をlocation.url=ではなくて毎回windows.openにしてても新規にウィンドウ開くことなく同じ
ウィンドウで新しいURLを開けてたんですよ。JavaScriptの仕様的にそれがおかしいから直したら、ついでにバグ入れちゃったのかなあ?
2020/05/03(日) 21:36:56.65ID:4npkj+7k0
JavaScriptって関数のネスト地獄だと思うんですが、何かいい解決策ってあるんですか?(*´ω`)

os.cpus().forEach(cpuInfo => {
fs.appendFile(dataPath, `${cpuInfo.model}\n`, () => {
// ここに追加で色々処理を書くと、関数のネストがひどくて後々つらくなるのでは?
});
});

forEachとかappendFileを使わなくて書く方法は知ってるけど、今回はサンプルなのでわざと使ってるYo!
2020/05/03(日) 21:45:02.73ID:zP3ZF/rE0
引数に関数リテラルを書いてネストが深くなるのが嫌なら外で定義すればいい
228デフォルトの名無しさん (ワッチョイ ab61-A5SY [49.253.78.66])
垢版 |
2020/05/04(月) 23:00:12.61ID:CBUb3t9r0
javascriptでandroidアプリ作れるって聞いたんだけど
仕組みはどうなってんの?
ブラウザでキャッシュにプログラム全部落として実行ってこと?
2020/05/04(月) 23:04:22.47ID:8w+RiBVnr
>>228
javascript android 仕組みでぐぐれば出てくるけど、どうなってんの?
なんにも調べてないの?
230デフォルトの名無しさん (ワッチョイ ab61-A5SY [49.253.78.66])
垢版 |
2020/05/04(月) 23:24:39.48ID:CBUb3t9r0
>>229
そんなことを書くためだけにレスしたの?アホなの?
2020/05/04(月) 23:51:06.40ID:Y30cj42h0
>>230
君がアホということは皆分かってるから、そう喚くなよ
2020/05/05(火) 02:27:53.37ID:rwJ86+M00
この板のJavaScript のスレは、荒らし対策で緊急避難用に作られたもの。
web 制作管理板のスレへ書き込んだ方がよい

こちらには、荒らししかいない

荒らしは必ず、2回書き込む。
自分のレスに、リンクを付けて「そうだよな」みたいに自演する

多くの人が言ってるように見せかける。
午前、3時とかでも、同時に2つのレスを書くw
2020/05/05(火) 10:47:47.11ID:Y/up7PlTr
>>232
独自ルールで自演認定乙
お前が>>228の可能性も否定出来ないが
2020/05/08(金) 08:57:30.14ID:dckQgcH50
もう一個のスレはガイジがレスバトルしてて答えは返ってこないしこのスレは自治ガイジが暴れてるしこんなとこで質問しない方がいいが
2020/06/03(水) 19:07:48.44ID:jt2kVIBa0
javascriptで、1秒毎にGPSの位置情報を表示したいのですが、毎回、アクセス権確認が出てしまいます。
アクセス許可の確認ボックスが表示されるのを、最初の一回だけに出来ないでしょうか?

var timer;
timer = setInterval(test,1000);

function test() {
 navigator.geolocation.getCurrentPosition(test2);
}
function test2(position) {
 var geo_text = "緯度:" + position.coords.latitude + "\n";
 geo_text += "経度:" + position.coords.longitude + "\n";
 var date = new Date(position.timestamp);
 geo_text += "取得時刻:" + date.toLocaleString() + "\n";
 var a = document.getElementById("AAA");
 a.innerHTML = geo_text;
}
236235 (ワッチョイ d361-INBt [218.231.250.166])
垢版 |
2020/06/03(水) 19:40:21.72ID:jt2kVIBa0
watchPositionで
自己解決しました


バックグラウンド等々でも動作を継続させるのはどうしたら良いのでしょうか?
2020/06/10(水) 03:27:21.19ID:nXyeYMB9d
正規表現の質問です

2020/6/10
2020-6-10
2020.6.10

これをstringオブジェクトのsplitメソッドを使い日付の区切り部分で、"/"、"-"、"."のいずれの文字でも分割できるように

var reg=/\/|\-|\./gi;
console.log(2020/6/10.split(reg));

として
length(3) ["2020” , “6” , “20”]
期待通りの結果が出たのですが

var reg=/\/|\-|\./gi;←この部分を
var reg=/(\/|\-|\.)/gi;このようにグループ化したところ

length(5) ["2020” , “/” , “6” , “/“ , “20”]
上と違う結果になってしまったのですが、どういう理屈でこういう結果になったのか教えてくださいm(__)m

正規表現の
a|b|cはaかbかcのいずれかで、[a-c]これと同じ意味ですよね?
2020/06/10(水) 04:08:41.09ID:+QBvSnI00
>>237
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split
separator が、キャプチャする括弧を含む正規表現だった場合、 separator が一致するごとに、キャプチャする括弧の結果が (未定義の結果であった場合を含め) 出力配列に追加されます。

グループ化だけしたいなら(?:〜〜)で囲め
2020/06/10(水) 05:49:33.23ID:nXyeYMB9d
>>238
ありがとうございます。

括弧を含んだ正規表現の場合〜と解説してる文献があるんですね^_^;
こういうの自分で探せないわ…

何故そうなるのかはほとんど正規表現の知識がないので分かりませんが、とりあえず括弧で括った場合にはそういう挙動になるということは分かりました。

ありがとうございます
240デフォルトの名無しさん (ワッチョイ 6fc7-Z00E [111.216.204.69])
垢版 |
2020/06/15(月) 20:45:26.99ID:1F3a2yyn0
https://github.com/mdn/webextensions-examples/tree/master/borderify

githubでダウンロードするにはどうしたらいいんでしょうか
ダウンロードボタンがないです
2020/06/15(月) 21:10:05.21ID:JS6xK7rfH
マルチポストはやめましょう
242デフォルトの名無しさん (ワッチョイ 6fc7-Z00E [111.216.204.69])
垢版 |
2020/06/15(月) 21:13:50.22ID:1F3a2yyn0
スレを間違えただけです
2020/06/15(月) 21:41:15.07ID:7MR1R7860
>>242
指摘されるまで質問を撤回しなかった理由は?
2020/06/15(月) 23:53:35.57ID:6c4s/wK/0
JavaScript の質問は、web制作管理板の方へ書き込んでください!

この板のスレは、荒らしが出た時に、緊急避難用として立てられたもので、現在は使われていない!
245デフォルトの名無しさん (ラクッペペ MM96-+D7B [133.106.90.78])
垢版 |
2020/07/05(日) 23:47:37.29ID:S84HRZFZM
javascript初心者で右も左もよくわからないんだけどconsole.log();ってみなさんchromeなら検証からやって
2020/07/06(月) 05:50:27.12ID:JmzGvw7e0
>>245
2行目がイミフなんだが、
DevelopperToolsを閉じてみなさんスルーしてやって
247デフォルトの名無しさん (ワッチョイ a56a-+D7B [42.125.49.111])
垢版 |
2020/07/06(月) 14:11:59.36ID:YRhjpfSA0
>>246
やっていますか? でした
2020/07/06(月) 14:50:26.97ID:L/pk2yTgr
>>247
それでも、エスパー案件

「右クリックメニューの[検証]からコンソールパネルを開いてますか?」

と質問してるのか?
---
ショートカットキーを覚えろ
https://developers.google.com/web/tools/chrome-devtools/shortcuts

そして、正しい日本語で質問することも覚えろ
249デフォルトの名無しさん (ラクッペペ MM96-+D7B [133.106.82.76])
垢版 |
2020/07/06(月) 15:11:39.18ID:AsDEr6ShM
>>248
そうです
理解があいまいで正しく伝達できませんでした
2020/07/06(月) 20:10:50.63ID:FMGmKD1v0
>>249
PCの基本が載ってる本を買って勉強した方がいい
2020/07/07(火) 00:22:17.39ID:wqab1oePa
すみません、自作JavaScriptをブラウザで見ようとしてブラウザが反応しなくなった時に
止める方法はありますですか?
ctl+alt+del押してタスクマネージャーから落とす以外に無いかですか?
2020/07/07(火) 04:38:45.11ID:7NRV/JzE0
いくらでもあるのでは?
ハンマーでPCごと叩き壊すとか
2020/07/07(火) 08:04:49.16ID:ZqIgROior
>>251
Chrome駕止めるか聞いてきたら、止める
2020/08/13(木) 21:43:17.29ID:cLv1fX6M0
こういう配列があったとして
const hoge = [
{name: "taro", age: 15, group: "A"},
{name: "hanako", age: 25, group: "B"},
]

最終的にこんな感じにしたい(ageだけ2倍に)
const hoge = [
{name: "taro", age: 30, group: "A"},
{name: "hanako", age: 50, group: "B"},
]

mapを使えばいいと思ったんですが、書き方が分かりませんでした…
(元のオブジェクトを展開して、ageだけ2倍するみたいなことが出来ると思った)
const newHoge = hoge.map(h => {...h, age: h.age * 2})
2020/08/13(木) 21:55:53.88ID:PyxE/Q5zM
>>254
=> {}って書くとアロー関数のパースが変わるので、()で囲むと良い

const newHoge = hoge.map(h => ({...h, age: h.age * 2}))
2020/08/13(木) 21:59:50.51ID:cLv1fX6M0
>>255
できましたーーーーー(泣)(1時間かかった)
ありがとうございました
2020/08/17(月) 12:12:35.63ID:Ew8mgsp/0
てs
2020/08/18(火) 19:36:32.49ID:65jirDTbd
これを
const hoge = "【aaa】bbb【ccc】【ddddd】eee【fff】gggg";

最終的にこういう配列にしたいんですが
const newHoge = hogeFunc(hoge);
console.log(newHoge)
["【aaa】",
"bbb",
"【ccc】",
"【ddddd】",
"eee",
"【fff】"]

indexOfで【】の位置特定して、sliceして、みたいなごり押し以外で何かスマートに処理する方法あるでしょうか?
lodash的な便利ライブラリを使用する方法とかでも構わないので知りたいです
2020/08/19(水) 03:50:29.18ID:5OSwc30i0
>>258
hoge.split(/(【[^】]*】)/).filter(Boolean)
2020/08/19(水) 03:58:30.68ID:5OSwc30i0
ggggが要らなければ要素数が3の倍数になるように配列を切り詰めて
2020/08/19(水) 08:10:31.51ID:VKqi5gMNr
>>258
hoge.match(/【[^】]*】|[^【】]+/)
2020/08/19(水) 08:16:32.46ID:VKqi5gMNr
>>258
hoge.match(/【[^】]*】|[^【】]+/g); // gフラグ付け漏れ修正
2020/08/20(木) 11:15:49.95ID:N3Xth98n0
>>259
>>261
ありがとうございました
正規表現ってぱっと見何やってるか分からなくて嫌いでしたが便利ですね
2020/09/14(月) 13:19:22.86ID:tp+/+C8Z0
この方法だとSJISの機種依存文字(崎の大じゃなくて立の文字)が文字化けしないんですが
reader.readAsText(file, "shift-jis");

ここのサンプル通りに
http://polygonplanet.github.io/encoding.js/tests/detect-file-encoding.html
reader.readAsArrayBuffer(file);
var unicodeString = Encoding.convert(codes, {to: 'unicode', from: 'SJIS',type: 'string'});
としても機種依存文字が化けてしまいます

そういうもんでしょうか?
2020/09/14(月) 15:14:02.04ID:zNKtsudb0
Encoding.jsはブラウザが持ってる変換ではなく自前の変換テーブル使ってやってるのでそういうもんなんだろうけど
IBMのFAB1はUNKNOWN、NECのED95からは変換できるので必要ならgithubで要望出してみれば?
2020/09/14(月) 16:05:43.73ID:tp+/+C8Z0
>>265
そういうもんでしたか

UTF-8からSJISは問題なく変換できるので
なにか間違ってるのかと思いました

ありがとうございました
267デフォルトの名無しさん (オッペケ Sr61-lMKa [126.212.166.165])
垢版 |
2020/09/17(木) 20:09:46.76ID:QWldExKKr
下記のコードでクリックした要素のidを取得したいのですが、取得できません。
$("li").on('click', function(e){
let k = $(this).attr('id');
});

取得する要素はjavascriptで動的にデータベースから値をとってきて表示しているのですが、
ページリロードした際にある要素しか上記のコードは有効でない、など、何か動かない条件などがあるのでしょうか。
よろしくお願いいたします。
2020/09/17(木) 20:20:53.83ID:fy5bwxWur
取得できないとは具体的にどういう状況を指すのか説明orコードが足らん
あとletで宣言したら外で使えないけどそれで良いの?
2020/09/17(木) 20:27:23.84ID:NHfa1bvj0
li が1つだけなら、取得できた。
2つ以上あったら、知らないけど

<ul>
<li id="abc">リスト 1</li>
</ul>

$( "li" ).on( 'click', function( e ) {
let k = $( this ).attr( 'id' );
console.log( k )
} );

Javascript, jQuery の質問は、web制作管理板の方へ書き込んでください!
この板のスレは、荒らしが出たときに、一時的に使っていたものなので
2020/09/17(木) 20:30:39.20ID:NHfa1bvj0
li が2つ以上あっても、クリックしたものが取得された

正常に動く
2020/09/17(木) 20:36:46.60ID:gD3Eguk90
動的に追加された要素に対して適用できてないとかそんなオチだろ
2020/09/18(金) 09:35:45.84ID:WV/PPbI+H
取得できそうなもんだけどなぁ
エスパー過ぎてわからん
273デフォルトの名無しさん (ワッチョイ b3f1-Kk5w [180.221.240.118])
垢版 |
2020/10/01(木) 18:40:48.93ID:3EMbehP20
enchant.jsでゲームを作り
自分のレンタルwebサーバにUPしたら
ブラウザで「NET::ERR_CERT_AUTHORITY_INVALID」のエラーが出て
他の誰にもゲームを見てもらえません。

なにがどうなっているのでしょうか?
2020/10/01(木) 18:58:58.89ID:by80Zctlr
明らかにサーバー(SSL証明書エラー)の問題
此処で情報を詳しく出しても良いけど
当該レンサバのスレで質問する方が近道だと思う
275デフォルトの名無しさん (ワッチョイ b3f1-buUt [180.221.240.118])
垢版 |
2020/10/01(木) 19:08:37.71ID:3EMbehP20
>>274
XSERVERでございます
276デフォルトの名無しさん (ワッチョイ b3f1-buUt [180.221.240.118])
垢版 |
2020/10/01(木) 19:09:26.51ID:3EMbehP20
SSLとか証明書とか意味がさっぱりわからないのですが
なにがどうなっているのでしょうか?
2020/10/01(木) 19:12:56.72ID:fSnOANSlM
Cloudflareでも通しとけ
278デフォルトの名無しさん (ワッチョイ b3f1-buUt [180.221.240.118])
垢版 |
2020/10/01(木) 19:21:47.87ID:3EMbehP20
Cloudflareとは何じゃ
良い子はそんなの使ってません。
2020/10/01(木) 20:39:45.05ID:by80Zctlr
>>276
SSLが分かんないのにURLがhttpsになってたら設定見直せとしか
「独自SSL」とかその辺見たらいいんじゃない
いずれにせよJS関係無いので向こうで聞いてみたら
XSERVER エックスサーバー Part6
https://mevius.5ch.net/test/read.cgi/hosting/1568069691/
2020/10/01(木) 22:31:33.76ID:theiHz1p0
AWS のS3 とか、知らんのか?w
HTTPS, SSL の証明書とか、システム構築運用の初歩の初歩だがw

無料の証明書、let's encrypt とか
2020/10/03(土) 14:18:04.93ID:l4QjehZB0
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14232251614?sort=1&;page=2
abiko tetuってやつヤバすぎ
282デフォルトの名無しさん (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 10:58:53.79ID:asjsDRkW0
sort関数に追加の引数を渡すことってできますか?
array.sort(mySort())に引数を与えて条件によって処理を変えたいのですが。

普通にmySort()に引数を入れるとソートで使われる引数に値が入ってしまってダメでした。
2020/10/14(水) 11:29:33.74ID:B+LQat5m0
function mySort(value) {
if(value===1) {
return (a, b) => a-b
} else if (value===2) {
return (a, b) => b-a
}
}

array.sort(mySort(1)) // 昇順
array.sort(mySort(2)) // 降順
284282 (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 11:48:53.44ID:asjsDRkW0
ありがとうございます。
新しいjsでは大丈夫でしたが、ES3という超古いバージョンなのです。
書き忘れていました。後出しで申し訳ありません。
(アドビのソフトで使われているjsです)
2020/10/14(水) 12:41:33.59ID:p6YQijR2r
>>284
bindみたいな引数束縛する関数を作る
2020/10/14(水) 12:44:22.07ID:p6YQijR2r
>>284
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/15-4_Array_Objects.html#section-15.4.4.11
287282 (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 13:05:25.23ID:asjsDRkW0
>>285
ちょっと自分のスキルでは難しそうです。
2020/10/14(水) 13:40:46.13ID:z5Uy/Vd30
Function.prototype.bind()
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

bind this か?
289デフォルトの名無しさん (オッペケ Srcb-D9NN [126.208.250.170])
垢版 |
2020/10/14(水) 13:53:20.67ID:z5/Y8RhDr
ソート関数なんて自前で作ればいい
2020/10/14(水) 13:58:43.04ID:bGR5EKGW0
ES3だと
return (a, b) => a-b

return function(a, b) { return a - b; };
じゃね?

だいたいsortと比較関数でクロージャにしちゃって引数でなくローカル変数でやっちゃうよね
291282 (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 14:10:27.29ID:asjsDRkW0
returnの挙動はともかく、
mySort(value)自体がES3だとできないのです。(aにvalueが入ってしまう)
とりあえず今はグローバル変数で対応していますが、
引数でやる方法がないのかと思いまして。
292デフォルトの名無しさん (ワッチョイ 97d2-f5T3 [124.103.45.183])
垢版 |
2020/10/14(水) 16:00:56.30ID:zqMcknRo0
比較関数はどうやって指定しているんですか?
2020/10/14(水) 17:00:41.74ID:Tfis7AoIM
>>291
ES3でもできるよ
できないと思ってるコードを書いてくれれば原因わかる
294282 (ワッチョイ 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;
}
2020/10/14(水) 17:20:07.02ID:Azmo5ss/0
var ary=[10,12,53,41,5,6,];
ary.sort(mySort(-1));
function mySort(c){
return function(a,b){
return c<0 ? a-b : b-a;
};
}
296282 (ワッチョイ ff7b-yH5j [153.198.55.63])
垢版 |
2020/10/14(水) 17:28:28.99ID:asjsDRkW0
ありがとうございます。まさに希望どおりです。
こんな書き方もできるんですね。
2020/10/14(水) 18:41:11.04ID:Azmo5ss/0
高階関数やクロージャについて調べてみると理解進むよ。
ちなみに今でも全然通用する概念。
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がそのまま表示されてしまいます。

ダブルクオートで囲い直す方法ってございませんでしょうか?
よろしくお願い致します。
2020/10/24(土) 11:37:48.17ID:4WVjWXseM
>>298
wrap: true
2020/10/24(土) 12:36:00.80ID:gS1xqNx8M
>>299
ありがとうございます。
しかしダメでした、、
やっぱり \n がそのまま表示されてしまいます。
2020/10/24(土) 13:25:10.82ID:gS1xqNx8M
すみません。自己解決しました。
\ではなくバックスラッシュでした。
ありがとうございました。
2020/10/24(土) 21:42:06.09ID:6VJCwZcaM
そもそも文字列はシングルクオートで囲う癖つけとくと便利だと思う
テンプレート文字列にするのもいいけど
2020/11/08(日) 22:08:22.01ID:EfB5Dlnya
requirejsやってるんだけどシェルのexportコマンド的なの無いの?
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みたいにするしかないのかな
2020/11/24(火) 14:02:04.95ID:cyXA9vgjM
function foo(a, b, ...rest)
2020/11/25(水) 01:19:47.68ID:UPK+j49C
>>305
無理でした
2020/11/25(水) 16:04:16.70ID:zD7zhP2P0
いまいち何がしたいのかよくわかんないけど
function hoge(o = {}){
console.log(Object.keys(o))
}

hoge({a: 1, b: 3})
//=> ["a", "b"]
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名はこれに限らず)
2020/11/25(水) 17:12:47.42ID:ulXBn3sm0
JSにそういう記法はないので無理
Pythonを使え
2020/11/25(水) 17:15:26.00ID:zD7zhP2P0
えっ…じゃあこうだけど??
function hoge(o = {}){
console.log(o)
}

hoge({x: 1, y: 2, a: "ho", b: "ge"})
//=> {x: 1, y: 2, a: "ho", b: "ge"}
2020/11/25(水) 17:52:06.24ID:UPK+j49C
>>309
なるほど
他の言語だとこういう書き方があったのでもしかしたらJSにもあるのかなとおもったのですがないのですね
ありやした

>>310
それはもちろん
しかしそれだとそもそも{}表記なんで
312デフォルトの名無しさん (ワッチョイ 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"}
2020/11/25(水) 19:29:03.94ID:zD7zhP2P0
hoge`
x = 1,
y = 2,
a = "ho",
b = "ge",
z = x + y,
c = a + b
`
//=> {x: 1, y: 2, a: "ho", b: "ge", z: 3, c: "hoge"}
2020/11/25(水) 19:36:00.93ID:UPK+j49C
>>312,313
なるほど
そんな書き方もできるんですね
ありがとうございます
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
}))
})
なんですけどこれだけの処理に二重でループ回すのはナンセンスな気がしてしまって・・・
2020/11/25(水) 21:48:23.27ID:UiakocYp0
>>315
sortかfotEachしたら?
2020/11/25(水) 22:03:22.81ID:UiakocYp0
>>315
あるいはreduceか
forとかfor-ofで書けるようになった方がいいとは思うけどね
2020/11/25(水) 22:12:00.77ID:3CNxpkun0
自分で書いといてなんなんですが>>315のnumは存在しない場合もありました

>>316,317
sortはアリかなと思いました
他のメソッドはパっと思いつく感じ最初の関数と似たようなものしか思いつきませんでした・・・
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)
とか。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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