2017-01-01 17 views
0

を返します。私の質問は、オブジェクトが配列に変換されたとき、なぜオブジェクトが既にプロパティを持っている場合、javascriptは0を返しますか?私は誰かが私を助けてくれることを願っています。気にしない人なら、jQueryを使わなくても修正してほしいです。変換されたアレイは、私は私のjavascriptのファイルにこのコードを持っている長さ0

+1

配列のキー名と番号、およびlengthプロパティを持つオブジェクトです....あなたのオブジェクトがキーとして数字とは性質や 'length'性質を持っていません空の配列 –

+1

'Array.prototype.slice.call()'は配列のようなオブジェクトでのみ有効ですが、あなたのオブジェクトは配列のようなものではありません。 – Barmar

+0

期待される結果は何ですか?オブジェクトの配列、またはオブジェクトの値を反映する値の配列? – guest271314

答えて

2

Object.entries()を使用すると、プロパティの配列、元のオブジェクトの値の配列、プロパティを反映するオブジェクトの配列、元のオブジェクトの値の配列を作成できます。

Object.entries()方法がためにインループ はのプロパティを列挙していることであるfor...inループ(差によって提供される と同じ順序で、指定されたオブジェクト自身 列挙プロパティのアレイ[key, value]ペアを返しますプロトタイプチェーンも同様)。あなたが得るよう

var items = { 
 
    first: 'Item 1', 
 
    second: 'Item 2', 
 
    third: 'Item 3' 
 
}; 
 

 
var arr = Object.entries(items); 
 

 
console.log(arr); 
 

 
var arr1 = Object.entries(items) 
 
      .map((value, index) => { 
 
       return {[value.shift()]: value.pop()}      
 
      }); 
 

 
console.log(arr1);

+0

* Object.entries *はまだ実験的な技術であり、ECMAScript(現在は7版)の一部ではないことを指摘しておきます。 – RobG

+1

@RobG利用可能な[polyfill](https://github.com/tc39/proposal-object-values-entries)があります。 [サポートされている](http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Browser_compatibility)、chomium 51+、firefox 47+。あるいは、 'Array.prototype.map()'を伴う 'Object.keys()'は同じ結果を返すために利用できます。 – guest271314

+0

'console.log(typeof arr)'とタイプしたとき、 'array'ではなく' object'を返しました。それを実際の配列に変換することは可能ですか? – jst16

関連する問題