\r\n```","dateModified":"2017-03-14T05:08:55.874Z","datePublished":"2017-03-14T05:08:55.874Z","upvoteCount":2,"url":"https://teratail.com/questions/69053#reply-109166"},"suggestedAnswer":[{"@type":"Answer","text":"パッと見言えることはforのiがいくら増えても同じところをぐるぐる回ってるだけなので根本的に考え方がおかしいです。","dateModified":"2017-03-14T05:10:51.574Z","datePublished":"2017-03-14T05:10:51.574Z","upvoteCount":2,"url":"https://teratail.com/questions/69053#reply-109170","comment":[]},{"@type":"Answer","text":"いろいろ突っ込みどころがありますが…\r\n0. forで使っている i を、forで回している処理の中で全く使用していません。\r\n0. value に products[1]、すなわち {id:'x002', name:'商品B', price:'金額'} を突っ込んでいますから、for文の中の value はどの回でも同じものを返します。\r\n0. products は配列ですから、 i\r\n\r\n\t\r\n\t\t \r\n\t\t \r\n\t\r\n\t\r\n\t\t\r\n\t\r\n\r\n```","dateModified":"2017-03-14T05:09:31.843Z","datePublished":"2017-03-14T05:09:31.843Z","upvoteCount":4,"url":"https://teratail.com/questions/69053#reply-109167","comment":[]},{"@type":"Answer","text":"配列のインデックスを忘れています(`products[i].id`). ただ最近のJSっぽく書くのであればArray.prototype.mapやfor-of文を使うと良いと思います。(ブラウザのサポート状況には注意したほうが良いと思いますが)\r\n\r\n```javascript\r\nconst ids = products.map(p => p.id);\r\n\r\nconst ids = [];\r\nfor (const product of products) {\r\n ids.push(product.id)\r\n}\r\n```","dateModified":"2017-03-14T05:07:02.131Z","datePublished":"2017-03-14T05:07:02.131Z","upvoteCount":0,"url":"https://teratail.com/questions/69053#reply-109165","comment":[]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/JavaScript","name":"JavaScriptに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/69053","name":"値の取得方法教えてください。"}}]}}}
こんにちは。再び質問させて頂きます。
var products = [
{id:'x001',name:'商品A',price:'金額'},
{id:'x002',name:'商品B',price:'金額'},
{id:'x003',name:'商品C',price:'金額'}
];
var value = products[0];
for(var i =0; i < products; i++){
console.log(value.id);
}
for文使って3つのid値を取得しようとしたのですが、上手くいきません。
3つのid('x001','x002','x003')を取得する方法を教えてください。
html
1 <! DOCTYPE HTML >
2 < html lang = " ja " >
3 < head >
4 < meta charset = " UTF-8 " >
5 < title > </ title >
6 </ head >
7 < body >
8 < script type = " text/javascript " >
9 var products = [
10 { id : 'x001' , name : '商品A' , price : '金額' } ,
11 { id : 'x002' , name : '商品B' , price : '金額' } ,
12 { id : 'x003' , name : '商品C' , price : '金額' }
13 ] ;
14 for ( var i = 0 ; i < products . length ; i ++ ) {
15 console . log ( products [ i ] . id ) ;
16 }
17 </ script >
18 </ body >
19 </ html >
これでいいのではないでしょうか?
javascript
1 var products = [
2 { id : 'x001' , name : '商品A' , price : '金額' } ,
3 { id : 'x002' , name : '商品B' , price : '金額' } ,
4 { id : 'x003' , name : '商品C' , price : '金額' }
5 ] ;
6
7 for ( var i = 0 ; i < products . length ; i ++ ) {
8 console . log ( products [ i ] . id ) ;
9 }
パッと見言えることはforのiがいくら増えても同じところをぐるぐる回ってるだけなので根本的に考え方がおかしいです。
ベストアンサー
配列の長さを調べるには
array.lengthです
<script>
var products = [
{id:'x001',name:'商品A',price:'金額'},
{id:'x002',name:'商品B',price:'金額'},
{id:'x003',name:'商品C',price:'金額'}
];
for(var i =0; i < products.length; i++){
console.log(products[i].id);
console.log(products[i].name);
console.log(products[i].price);
}
</script>
いろいろ突っ込みどころがありますが…
0. forで使っている i を、forで回している処理の中で全く使用していません。
0. value に products[1]、すなわち {id:'x002', name:'商品B', price:'金額'} を突っ込んでいますから、for文の中の value はどの回でも同じものを返します。
0. products は配列ですから、 i<products は正しく判定してくれるとは限りません。
配列のインデックスを忘れています(products[i].id). ただ最近のJSっぽく書くのであればArray.prototype.mapやfor-of文を使うと良いと思います。(ブラウザのサポート状況には注意したほうが良いと思いますが)
javascript
1 const ids = products . map ( p => p . id ) ;
2
3 const ids = [ ] ;
4 for ( const product of products ) {
5 ids . push ( product . id )
6 }
15分調べてもわからないことは teratailで質問しよう!
ただいまの回答率 85.29%
質問をまとめることで 思考を整理して素早く解決
テンプレート機能で 簡単に質問をまとめる
質問する