質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.85%

  • JavaScript

    14281questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

javascriptで、配列の一部の値を変更したい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 189

yamadaman

score 1

皆さま、いつも大変お世話になっております。
javascriptを勉強中なのですが、分からないことがあり質問させて頂きます。

現在、2つの配列を用意しています。
配列aaには10個の要素を作り、それぞれに"yellow"という言葉を入れますが、
配列bbに格納されている値をaaのindexとみなして、配列aaの2,5,7番目だけ"yellow"の代わりに"blue"という言葉を入れたいです。
完成図:
["yellow","yellow","blue","yellow","yellow","blue","yellow","blue","yellow","yellow"]

これを実現するために下記のようなコードを書いたのですが、結果が全て"yellow"になりうまくいきません。
誠に恐れ入りますが、javascriptに詳しい方ご教授頂けませんでしょうか。
何卒宜しくお願い致します。

   var aa = [];
   var bb = [2,5,7]; 

    function ccc(){
        for (var i = 0, len = 9; i < len; i++)
            aa[i] = "yellow"
            if(aa[i]===bb[i] {
                aa[i] = "blue"
            }
            console.log("aa=",aa)
    }

    ccc();
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+3

こんにちは。

配列のincludes メソッドと、三項演算子を使うと、以下のようにも書けます。

var bb = [2, 5, 7];
var aa = [];

function ccc() {
    for (var i = 0; i < 10; i ++)
        aa[i] = bb.includes(i) ? 'blue' : 'yellow';
}

ccc();

参考になれば幸いです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/27 21:41

    す、すげえ、これは衝撃的です。
    実装出来ました。
    ご教授頂きまして誠に有難うございます。

    キャンセル

  • 2018/05/27 21:41

    > 実装出来ました。

    とのことでよかったです!

    キャンセル

checkベストアンサー

+2

            if(aa[i]===bb[i] {
                aa[i] = "blue"
            }


ここのif文の条件がtrueになることがないですね。aa[i]は常にyellowなので。

比較するのは、i===b[i]ですかね。

↑間違ってますね。
iとbの配列の値のいずれかの比較、ですね。失礼しました。

 コメントを受けての追記

iとbの配列の値のいずれかの比較

上記のニュアンス自体への理解は問題ないでしょうか。

    for(var j = 0; j < bb.length; j++) {
        if(i === bb[j]) {
            aa[i] = "blue";
        }
    }

ただし、無駄にループするので処理としては良くないですね。
個人的には以下のような書き方が良いかなと思います。(動作確認はしていません)

var aa = [];
var bb = [2,5,7]; 

function ccc(){

    // aa配列生成
    for (var i = 0, len = 9; i < len; i++) {
        aa[i] = "yellow";
    }

    // aa配列の特定値を書き換え
    for (var j = 0; j < bb.length; j++) {
        aa[bb[j]] = "blue";
        // 以下のようにも書けますね
        // var idx = bb[j];
        // aa[idx] = "blue";
    }

    // aa配列内容の出力
    for(var k = 0; k < aa.length; k++) {
        console.log("aa=" + aa[k]);
    }
}

ccc();

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/27 19:21

    ご回答頂きまして有難うございます。
    恐れ入ります、ご教授頂いた「iとbの配列の値のいずれかの比較」という部分が、いまいち理解できません。
    私でも分かるようにご教授頂けませんでしょうか。

    キャンセル

  • 2018/05/27 19:52 編集

    で、できました!!
    自分にはループを複数回使うという発想がありませんでした。
    誠に有難うございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.85%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    14281questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。