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

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

新規登録して質問してみよう
ただいま回答率
85.51%
JavaScript

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

Q&A

解決済

3回答

164閲覧

javascriptのオブジェクト配列に対して、新たなオブジェクト要素を追加したいです!

Tanaka2319

総合スコア19

JavaScript

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

0グッド

0クリップ

投稿2019/05/24 19:49

下記のようなオブジェクト配列がある時、
各オブジェクト変数に対して新たなオブジェクトを追加したいです。

javascript

1[ 2 { 3 "gpsDate": "2011/02/14", 4 "gpsTime": "10:31:18", 5 "lon": 138.73067666666665, 6 "lat": 37.125295, 7 "speed": 115.1, 8 "direction": 91, 9 "numSat": 3, 10 "idx": 0 11 }, 12 { 13 "gpsDate": "2011/02/14", 14 "gpsTime": "10:31:33", 15 "lon": 138.736065, 16 "lat": 37.124905, 17 "speed": 114.4, 18 "direction": 95.9, 19 "numSat": 5, 20 "idx": 1 21 } 22]

上記オブジェクト配列が下記のようになって頂きたいです。

[ { "name":tanaka "gpsDate": "2011/02/14", "gpsTime": "10:31:18", "lon": 138.73067666666665, "lat": 37.125295, "speed": 115.1, "direction": 91, "numSat": 3, "idx": 0 }, { "name":yamada "gpsDate": "2011/02/14", "gpsTime": "10:31:33", "lon": 138.736065, "lat": 37.124905, "speed": 114.4, "direction": 95.9, "numSat": 5, "idx": 1 } ]

通常のオブジェクト変数に新たなオブジェクト要素を追加する場合は、下記のようにすれば良いが

var user = { id: 1, name: "name", }; user.country = "Japan"; user["language"] = "jp";

どなたかお力添えして頂きたいです!

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

項目が多く分かりにくい時は、物事を限りなくシンプルにしてからアプローチすると、仕組みが掴みやすいかもしれません。

質問コードは、配列の中にオブジェクトが2つ入っています。単純化すると、通常の配列とほぼ同じです。中身のデータタイプが違うだけです。

js

1let arr1 = [1, 2]; // よく見かける配列 2let arr2 = [{}, {}]; // 質問コードの配列 3 4console.log(arr1[0]) //--> 1: インデックス0の要素(1)が返却される 5console.log(arr2[0]) //--> {}: インデックス0の要素(オブジェクト)が返却される

各インデックスの位置にある値が返却されるという点がポイントかもですね。

もう少し質問コードに近づけると…

let arr3 = [ {id: 1}, {id: 2} ]; let obj1 = arr3[0]; console.log( obj1.id ) //--> 1 obj1.name = "goku"; // === arr3[0].name = "goku"; // === arr3[0]["name"] = "goku"; console.log( arr3[0].name ) //--> "goku"

質問コード 完成版

js

1let drivers = [ 2 { 3 "gpsDate": "2011/02/14", 4 "gpsTime": "10:31:18", 5 "lon": 138.73067666666665, 6 "lat": 37.125295, 7 "speed": 115.1, 8 "direction": 91, 9 "numSat": 3, 10 "idx": 0 11 }, 12 { 13 "gpsDate": "2011/02/14", 14 "gpsTime": "10:31:33", 15 "lon": 138.736065, 16 "lat": 37.124905, 17 "speed": 114.4, 18 "direction": 95.9, 19 "numSat": 5, 20 "idx": 1 21 } 22]; 23 24drivers[0].name = "tanaka"; 25drivers[1].name = "yamada"; 26 27 28console.log( drivers[0] ); 29console.log( drivers[1] ); 30/* 31{ 32 direction = 91; 33 gpsDate = "2011/02/14"; 34 gpsTime = "10:31:18"; 35 idx = 0; 36 lat = "37.125295"; 37 lon = "138.7306766666667"; 38 name = tanaka; <---- ◯ 39 numSat = 3; 40 speed = "115.1"; 41}, 42{ 43 direction = "95.90000000000001"; 44 gpsDate = "2011/02/14"; 45 gpsTime = "10:31:33"; 46 idx = 1; 47 lat = "37.124905"; 48 lon = "138.736065"; 49 name = yamada; <---- ◯ 50 numSat = 5; 51 speed = "114.4"; 52} 53*/

投稿2019/05/27 12:13

編集2019/06/10 04:10
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

配列に名前を追加して、forEachでループして追加します。

js

1var hikinige = [ 2 { 3 "gpsDate": "2011/02/14", 4 "gpsTime": "10:31:18", 5 // 以下略 6 }, 7 { 8 "gpsDate": "2011/02/14", 9 "gpsTime": "10:31:33", 10 // 以下略 11 } 12]; 13var names = ['tanaka', 'yamada']; 14hikinige.forEach(function(v, i) { 15 v.name = names[i]; 16}) 17console.log(hikinige); 18/* 190: {gpsDate: "2011/02/14", gpsTime: "10:31:18", name: "tanaka"} 201: {gpsDate: "2011/02/14", gpsTime: "10:31:33", name: "yamada"} 21*/

投稿2019/05/25 01:54

yasutomi

総合スコア2937

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

質問文に書いてある下記のようにすればいいが同じ書き方すれば田中と山田を追加できる

let hikinige = [ { "gpsDate": "2011/02/14", "gpsTime": "10:31:18", "idx": 0 }, { "gpsDate": "2011/02/14", "gpsTime": "10:31:33", "idx": 1 } ]; hikinige[0].name="E-duka"; hikinige[1].name="Kozo"; console.log(hikinige);

投稿2019/05/24 20:03

編集2019/05/25 01:40
hentaiman

総合スコア6389

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yasutomi

2019/05/25 01:49 編集

コードが間違っています。 [ がひとつ多いです。
hentaiman

2019/05/25 01:39

恐ろしく甘いコード きみでなきゃ見逃しちゃうね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問