こんにちは。
ちょっと昨日から悩んでいるのですが
正直お手上げ状態です・・・。
タイトルどおりの問題なのですが、
まず無名関数で配列の中身をそれぞれ取り出せない。。
※配列への格納はpushを使わなければいけない。
昨日まで・・・
var makeArray = function() {
var result = [];
for(var i = 0; i < arguments.length; i++) {
result.push(makeArray) ;
}
return result;
}
var resultArray = makeArray(1, -9, 67, 3, -21);
output(resultArray);
出力結果
function () {
var result = [];
for(var i = 0; i < arguments.length; i++) {
result.push(makeArray) ;
}
return result;
}
上記が5回
これはなんとなく、argumentで5を判定して、
それをmakeArrayで呼び出しているからというところまでは理解できました。
今日の朝
var makeArray = function() {
var result = [];
for(var i = 0; i < arguments.length; i++) {
result.push(makeArray[i]) ;
}
return result;
}
var resultArray = makeArray(1, -9, 67, 3, -21);
output(resultArray);
iの回数分まわしているからmakeArrayにiを添え字として与えれば・・・
でも出力結果は
=>[,,,,]
そして先ほどようやく近いところまできた。
var makeArray = function(makeArray) {
var result = [];
for(var i = 0; i < arguments.length; i++) {
result.push(makeArray) ;
}
return result;
}
var resultArray = makeArray(1, -9, 67, 3, -21);
output(resultArray);
出力結果
[1,1,1,1,1]
ようやく数字が出てきたが、正直混乱中です。
引数にmakeArrayを入れなければいけないのか。
ん~・・・
なかなか起き上がれないですね、、手口を発見するのが難しいです。
もしよろしければアドバイスくださると幸いです。
それではこれからもよろしくお願いいたします。
追記:
解決しました。
すばやいご回答ありがとうございます!
無事に解決することができました。
pushで入れる箇所に、入れるべきものが間違ってた模様。
function(makeArray){
... }
result.push(makeArray) ;
ではなく
function(){
...}
result.push(arguments[i]) ;
これで入れていくようです。
いつもありがとうございます!