のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,490,731人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.131 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    351 : Name_Not - 2018/01/20(土) 12:53:03.62 ID:???.net (+57,+29,-33)
    書いてもいないライブラリやフレームワークが答えの場合だってあるだろ?

    ってか答を知らないから質問する訳で
    答を質問に書くわけがない
    352 : Name_Not - 2018/01/20(土) 14:03:12.49 ID:???.net (-1,-29,-21)
    お前らwshスレって落ちました?
    質問しようとしたらスレッド一覧にない・・・
    353 : Name_Not - 2018/01/21(日) 09:24:46.83 ID:???.net (+3,-30,-201)
    関数へ引数の渡し方が、func(A)、func(B)、func(A, B)、の3種類(のみ)。
    (A, B)の場合は共に実行。

    関数内は、A、Bそれぞれ同じ処理。例えば$('#hoge-' + A).~。
    処理は長いのでif分岐は重複が多すぎ。

    yobidasi(A);
    yobidasi(A, B);

    function func1(arg1, arg2){
    func2(arg1);
    if(arguments.length === 2){func2(arg2)};

    function func2(arg){
    $('#hoge-' + arg).~;
    $('#hage-' + arg).~;
    }
    }

    より簡単な書き方教えてください。
    354 : Name_Not - 2018/01/21(日) 10:23:17.94 ID:???.net (+71,-30,-72)
    そもそもfunc(A);func(B);で良くねとは思うけど

    function func(...args) {
    for (let arg of args) {
    // $('#hoge-' + arg).~;
    // $('#hage-' + arg).~;
    }
    }
    355 : Name_Not - 2018/01/21(日) 12:37:55.62 ID:???.net (-2,-30,-41)
    > 関数へ引数の渡し方が、func(A)、func(B)、func(A, B)、の3種類(のみ)。
    > (A, B)の場合は共に実行。

    その(A, B)をやめろって話だな
    356 : Name_Not - 2018/01/21(日) 17:21:55.95 ID:???.net (+31,-30,-29)
    >(A, B)をやめろ

    そうなのですが、すると
    yobidasi(A);
    yobidasi(B);
    となり、yobidasiの類は20種類あるので40行になってしまいまして。
    357 : Name_Not - 2018/01/21(日) 17:38:24.17 ID:???.net (-1,-29,-7)
    yobidasi(A), yobidasi(B);
    で良いじゃん
    358 : Name_Not - 2018/01/21(日) 20:35:03.46 ID:???.net (+95,+28,-9)
    >>354
    forループはオブジェクトのみ推奨って先生が言ってなかったっけ?
    359 : Name_Not - 2018/01/21(日) 22:28:35.52 ID:???.net (+52,+29,+0)
    いいんだよ、俺様の世界なんだから
    360 : Name_Not - 2018/01/21(日) 22:40:32.35 ID:???.net (+104,+30,-37)
    >>358
    その「先生」は担任の先生って言う意味で素人だろw
    361 : Name_Not - 2018/01/21(日) 23:13:52.24 ID:???.net (+103,+29,-5)
    >>360
    google先生だろ
    SEO少しでもかじったのならすぐピンとくる
    362 : Name_Not - 2018/01/21(日) 23:15:40.97 ID:???.net (+99,+28,-19)
    >>361
    オマエ馬鹿だろ JavaScriptって知ってるか?
    363 : Name_Not - 2018/01/21(日) 23:32:03.53 ID:???.net (-5,-28,-2)
    まさかSEOとjsが関係ないとでも
    364 : Name_Not - 2018/01/21(日) 23:39:42.75 ID:???.net (+19,-8,-27)
    > forループはオブジェクトのみ推奨って先生が言ってなかったっけ?

    これがSEOと関係があるとでも?
    ないない
    365 : Name_Not - 2018/01/22(月) 00:04:07.14 ID:???.net (-1,-29,-8)
    Objectのみ推奨ってのはfor-inのことだろ
    366 : Name_Not - 2018/01/22(月) 00:22:17.35 ID:???.net (-5,-28,+0)
    SEO関係あるもん!
    367 : Name_Not - 2018/01/22(月) 10:08:34.84 ID:???.net (+128,+29,-9)
    >>356
    >>354でもいいけど、
    とにかく君に一番必要なことは配列を覚えることだな
    368 : Name_Not - 2018/01/22(月) 16:42:21.74 ID:???.net (-23,-30,-198)
    js初心者です。

    var accounts = {
    'mail@address1': 'user1',
    'mail@address2': 'user2',
    ...
    'mail@address100': 'user100',
    'mail@address n': 'user n',
    }

    このように別のプログラムで使用してるオブジェクト型の文字データがありましてそれを利用したいのですが
    うまく行かないので教えてください。
    オブジェクトのデータの登録数は不定の為、メールアドレスとユーザー名を1セットと考え総数をカウントしたいのと
    n番目のメールアドレスとユーザー名を文字列データで取得したい。
    全部を読み取って文字列配列にいれてもOKですし、n番目のデータは何と返すだけでも構いません。

    例えば 登録総数111で100番目のデータを取得した場合
    100/111 のデータは、ユーザーはuser100でアドレスはmail@address100です のように出来るとありがたいです。
    370 : Name_Not - 2018/01/22(月) 18:43:34.12 ID:???.net (+66,+29,-2)
    >>362が何言いたいのかわからん
    371 : Name_Not - 2018/01/22(月) 19:12:58.02 ID:???.net (-1,-29,-22)
    配列はfor かfor of
    for in はオブジェクとって本に書いてた
    372 : Name_Not - 2018/01/22(月) 19:53:51.03 ID:???.net (+58,+18,-16)
    >>367
    配列でもあんま変わらなくね?
    376 : Name_Not - 2018/01/22(月) 21:40:41.15 ID:???.net (+0,-30,-85)
    >>368
    Object.keys(accounts)でキーの配列を取得できる
    総数が欲しいならObject.keys(accounts).length
    ES2017からはObject.entries(accounts)が理想的

    ただし順序は保証されない
    可能ならオブジェクトは避けるべき
    377 : Name_Not - 2018/01/22(月) 22:18:37.71 ID:???.net (+51,+29,-1)
    >>373,376
    ありがとうございます!
    一歩先にすすめそうです
    379 : Name_Not - 2018/01/22(月) 23:59:04.35 ID:???.net (+52,+29,-66)
    >>378
    そりゃあるだろうけど、それってangularだよな?
    angularのやり方でやれば良いんじゃないの?

    まあ俺はそのやり方を忘れたけどなw
    アレだろ?jsの変数にバインドされてるってやつ
    380 : Name_Not - 2018/01/23(火) 00:03:29.33 ID:WLPFoLKy.net (-12,+29,-9)
    >>379
    angularってやつなのですか。
    聞いたことはありますが全く知らないです。
    勉強しないといけないことおおすぎる。。。
    382 : Name_Not - 2018/01/23(火) 00:48:19.81 ID:???.net (+57,+29,-17)
    とれるっていうのならそうなんだろうけどさ
    angularのやり方じゃねーぞ?
    それで良いのか悪いのか知らんけどさ
    普通は正しくないやり方だろうな
    383 : Name_Not - 2018/01/23(火) 15:14:35.38 ID:???.net (+23,+29,-31)
    勝手なやり方をしたら、ダメ!
    フレームワークのやり方に従っていないのなら、誤動作を起こす

    Angular を勉強すべし
    384 : Name_Not - 2018/01/23(火) 20:05:46.77 ID:???.net (+75,+29,-28)
    >>367
    最初配列でやってたのですがA,値,B,値という形もあり、
    また通しで見てるとABの方がどっち渡してるか一目でわかりやすいので変えました。
    どうもでした。
    386 : Name_Not - 2018/01/24(水) 02:08:15.18 ID:???.net (-1,-29,-5)
    何を目指すかによる
    JavaScript必須なページを作りたいならAngular
    387 : Name_Not - 2018/01/24(水) 08:55:26.78 ID:UdszAn8A.net (-5,+29,-130)
    今一番やりたいのはスクレイピングで
    次にデータ可視化なんで
    サイトの仕組みの理解とスクレイピングのスクリプトかくためにJavaScriptの勉強初めたんだけど
    jQuery使ってるサイトが多いのであとでjQueryもやろうとおもってたけど

    JavaScriptの勉強一通りおわったら
    Angurlarやってみることにしました
    そのあとD3やるかな
    ほんでひつようそうだったらjQueryやるかな
    やることおおすぎ。。。
    388 : Name_Not - 2018/01/24(水) 23:13:43.54 ID:???.net (+40,-30,-93)
    var s = '<tag>hoge</tag><tag>poge</tag><tag>fuge</tag>';
    var r = s.match(/\<tag\>(.*?)\<\/tag\>/g);
    console.log(r);
    とすると結果は
    ["<tag>hoge</tag>", "<tag>poge</tag>", "<tag>fuge</tag>"]
    になります
    つまりグループ化した部分を取り出していません
    gスイッチを使った場合はグループ化を使えないのでしょうか?
    こういう場合どうするのがいいのでしょうか?
    389 : Name_Not - 2018/01/24(水) 23:14:33.52 ID:???.net (+3,-30,-73)
    スクレイピングなら、Angular なんて関係ない。
    君が、たまたま、Angular製のページを対象にしただけだろ

    JavaScript なら、jQuery は必須

    Ruby で、Nokogiri とか、

    Selenium WebDriver, PhantomJS とか、
    Chromium, Chrome のヘッドレスモードとか
    390 : Name_Not - 2018/01/24(水) 23:22:55.14 ID:???.net (+75,+29,-7)
    >>388
    グループ化した部分ってどこ?
    グループ化って何のこと?
    391 : Name_Not - 2018/01/24(水) 23:24:07.94 ID:???.net (+3,-30,-29)
    >>388
    jQuery を使え

    $('tag').text();
    392 : Name_Not - 2018/01/24(水) 23:25:21.67 ID:???.net (+35,-12,-29)
    >>390
    (.*?)のことです
    正規表現において一般的な用語だと思いますが
    393 : Name_Not - 2018/01/24(水) 23:37:05.77 ID:???.net (+3,-30,-96)
    結局、jQuery でも、Ruby のNokogiri でも、
    取得する要素を、CSS セレクターで指定するのは同じ

    上はjQuery、下はNokogiri

    $('tag').text();
    doc.css('tag').text

    xpath で指定するのではなく、CSSセレクターの方が、簡単に指定できる
    394 : Name_Not - 2018/01/24(水) 23:49:50.17 ID:???.net (+3,-30,-88)
    正規表現では、データに親子関係のような構造があるものは、うまく取れない

    <tag1><tag2></tag2></tag1>

    このように要素がネストしていると、<tag1></tag2> が対応してしまうから

    jQuery とか、Ruby のNokogiri で、
    取得する要素を、CSS セレクターで指定する
    395 : 387 - 2018/01/24(水) 23:54:01.21 ID:???.net (+9,-30,-142)
    失礼、(.*?)だけを取り出したいってことか

    gフラグは正規表現全体で配列にする

    ので、こんなのしか思いつかない

    let s = '<tag>hoge</tag><tag>poge</tag><tag>fuge</tag>';
    let regex = /\<tag\>(.*?)\<\/tag\>/;
    let result = [];
    while(s){
    s = s.replace(regex, (...args) => {
    result.push(args[1]);
    return '';
    })
    }
    console.log(result);

    入れ子は考慮せず
    そこまでやると複雑すぎてどうにもならない
    396 : 392 - 2018/01/25(木) 00:07:22.24 ID:???.net (+4,-30,-138)
    >>395
    while(s)
    じゃなくて、
    while(regex.test(s))
    のほうがいいかも

    DOM(jQueryでもできるはず)で、

    let div = document.createElement('div');
    div.innerHTML = s;
    let elements = div.querySelectorAll('tag');
    // で、各elementsのtextContentを取得

    というのもありかと
    タグの入れ子は考慮せず
    397 : Name_Not - 2018/01/25(木) 01:19:36.76 ID:???.net (+57,+29,-5)
    http://qiita.com/honeydaisuki/items/d2a38cef1b95fd347fa4
    これ?
    最短マッチと最長マッチ
    398 : Name_Not - 2018/01/25(木) 06:23:05.64 ID:???.net (+3,-29,-59)
    String.matchで正規表現にgオプションをつけるとキャプチャが取れるのかどうかの話で答えは上の通り「取れない」
    RegExp.execを(複数回)使うか正規表現をやめてHTMLパーサを使うかだが正直後者を推奨する
    399 : Name_Not - 2018/01/25(木) 09:05:37.30 ID:???.net (-2,-30,-25)
    var s = '<tag>hoge</tag><tag>poge</tag><tag>fuge</tag>';
    根本的に参照が間違っている
    400 : Name_Not - 2018/01/25(木) 10:29:09.69 ID:???.net (-1,-29,-46)
    HTMLタグならHTMLパーサーやXMLパーサーが使えるけど
    正規表現はセパレーターがタグ(<>記号で囲まれた文字列)でない場合でも使える
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について