2016-09-29 13 views
1

私はパラメータとしてオブジェクトを受け取ろうとしていて、配列として返しますが運はありません。なぜコードに問題があるのか​​わかりません。私はこの時点で失われるか、まったく論理から完全に脱落するかもしれません。オブジェクト(パラメータ)を受け取り、配列を返します

function att(testobj) { 
    var q = ""; 
    for(var i = 0; i < testobj.length ; i++){ 
     q += testobj[i] + " "; 
    } 
    return q; 
} 

var obj1= { 
    Big: 10, 
    low: 5 
}; 

var attObj1= att(obj1); 
console.log(attObj1); 

var obj2= { 
    a: 10, 
    b: 20, 
    c: 30 
}; 

var attObj2= att(obj2); 
console.log(attObj2); 

私はコードのようにしてみてくださいでした、それは各配列の長さをチェックして、q += testobj[i]を使用しますが、私は何も結果が届かないことによってそれを並べ替えるためのループを実行します。空白のコンソールログ。

+0

が編集のためにあなたにFilburtをありがとう:) – WeInThis

+0

' testobj.length'役立つかもしれません配列と同じ方法です。それらを反復処理したい場合は、 'Object.keys'を使います。 – vlaz

+0

希望の出力を追加してください。 –

答えて

2

この資料では、object.keys()

+0

はい!誰かがちょうどそれを投稿しました!ありがとうございました! :) – WeInThis

1

キーを反復して、結合値を返すことができます。使用

方法:オブジェクトからすべてのキーを取得するため

  • Object.keys
  • Array#joinは、接着剤として与えられた文字列と文字列に配列を変換します。 Arrayなお

function att(testobj) { 
 
    return Object.keys(testobj).join(', '); 
 
} 
 

 
var obj1= { 
 
    Big: 10, 
 
    low: 5 
 
}; 
 

 
var attObj1= att(obj1); 
 
console.log(attObj1); 
 

 
var obj2= { 
 
    a: 10, 
 
    b: 20, 
 
    c: 30 
 
}; 
 

 
var attObj2= att(obj2); 
 
console.log(attObj2);

+0

ああ、Object.keys(testobj).map(function(k)の意味を教えてください)?私はかなりその部分を理解できませんでした。 – WeInThis

+1

'.map(function(k){return k;})'不要なステップ - とにかく同じ配列を返すことになります。唯一の利点はコピーされることですが、 'Object.keys'はすでに新しいものを作成しているので、それには何のメリットもありません。 – vlaz

+0

それは私が言うとかなりスマートだった。私は自分でやるのではない。しかし、ありがとう!特別なことを学ぶのにいつもいいよ!:) – WeInThis

1

一つの違いは、それらが上に反復することができることであり、技術的にObjectあります。

だから例えば、あなたが行うことができます。

var someArray = ['some', 'value', 'here']; 
 

 
for (var i = 0; i <= someArray.length; i++) { 
 
    console.log(someArray[i]); 
 
}

をしかし、あなたはそれが反復機能が含まれていないことができないようなオブジェクトで。

ObjectArrayを繰り返して繰り返したい場合は、両方をサポートする方法を検討する必要があります。例えば

:オブジェクトは `length`性質を持っていない:

function iterateOver(obj) { 
 
    for (var k in obj) { 
 
    console.log('Key', k, 'Value', obj[k]); 
 
    } 
 
} 
 

 
var someArray = ['some', 'value', 'here']; 
 
var someObject = { 
 
    some: 'value', 
 
    another: 'great_value' 
 
}; 
 

 
iterateOver(someArray); 
 
iterateOver(someObject);

+0

オハイオ、大丈夫!今私はそれを得る!それは私が言っているかなり良い説明だった。今私はそれをすべて理解している!ジョセフありがとう! :) – WeInThis

関連する問題