LoginSignup
4
3

More than 5 years have passed since last update.

【JavaScript】【解決】無名関数と、配列に新しい要素を追加するpush

Last updated at Posted at 2013-12-10

こんにちは。
ちょっと昨日から悩んでいるのですが
正直お手上げ状態です・・・。

タイトルどおりの問題なのですが、
まず無名関数で配列の中身をそれぞれ取り出せない。。

※配列への格納は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]) ;

これで入れていくようです。
いつもありがとうございます!

4
3
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3