2017-02-19 18 views
-1

javascript beginnerのループオブジェクト。 「for ... in」の質問。for ... with ... with

配列オブジェクトに適用されますが、日を定義することはできません。

<!doctype html> 
 
<html> 
 
<head> 
 
<meta charset="UTF-8"> 
 
<title>Loops and Control</title> 
 
</head> 
 

 
<body> 
 
<script> 
 
    var days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; 
 
    var message = ""; 
 
    for (i in days) { 
 
    message += 'Day ' + i + ' is' 
 
    day[i] + '\n'; 
 
    } 
 
\t alert(message); 
 
\t </script> 
 
</body> 
 
</html>

+0

正確にあなたの質問は何ですか:配列のエントリからの結果を構築:まさにこのユースケースのためのものですかreduce、?あなたは '+'と 'day'を' days'にする必要があります。あなたのブラウザのコンソールは何が間違っているかを教えてください。 –

+0

配列ではありません。ループの代わりにreduceを試してみてください – user93

+0

マップを使用するか、 'for(var i = 0; i mplungjan

答えて

1

いくつかの問題があります。

  1. day[i]を使用しようとしましたが、dayという変数はありません(daysと呼ばれています)。
  2. for-inは、配列エントリをループするためのものではありません。 details of your various options here
  3. あなたは+
  4. ' is'後のあなたのコードは、あなたが iを宣言する必要が The Horror of Implicit Globals (それは私の貧血の小さなブログの記事です)   —に獲物を落下さ逃しています。だから、

var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 
 
var message = ""; 
 
for (var i = 0; i < days.length; ++i) { 
 
    message += 'Day ' + i + ' is ' + days[i] + '\n'; 
 
} 
 
alert(message);

代わりに、配列は、あなたが自分のエントリに対して操作を行うために使用できるいくつかの機能を持っています。 forEachエントリをループしている、あります:

var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 
 
var message = ""; 
 
days.forEach(function(day, i) { 
 
    message += 'Day ' + i + ' is ' + days[i] + '\n'; 
 
}); 
 
alert(message);

...

var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 
 
var message = days.reduce(function(m, day, i) { 
 
    return m + 'Day ' + i + ' is ' + days[i] + '\n'; 
 
}, ""); 
 
alert(message);

+0

あなたが素晴らしいことに注意して歩いてください。どうもありがとうございました。 – Mimose

+0

@Micco:心配はいりません。私は何かを逃したので、上記の#4を追加しました。 –

1

あなたは、配列を反復処理するforループを使用する必要があります。 For inは、配列にはお勧めできません。

そうしないと、あなたはまた、配列の名前がために内部でスペルミスさforEach

var days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; 
 
var message = []; 
 

 
for(var i = 0; i < days.length; i++) { 
 
    message.push('Day', (i + 1), 'is', days[i] + '\n'); 
 
} 
 

 
alert(message.join(' '));

0

を使用することができます。それはする必要があります:あなたは、これは配列

const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 
 
const newLine = (acc, curr) => acc += curr + '\n'; 
 
const message = days.reduce(newLine, ''); 
 
console.log(message)
の方法を削減して達成できる

for (i in days) { 
    message += 'Day ' + i + ' is' + days[i] + '\n'; 
} 

iは、インデックスの値を取る、とあなたは、元の配列

+2

for..inを配列として使用することはお勧めしません – mplungjan

0

にアクセスするためにそれを使用します

+1

OP is初心者です。 ES6は初心者のためではありません – mplungjan

+0

@mplungjan ..この男はラムダに執着しています。彼の答えは、 –