2017-01-21 7 views
1

はこのように、配列の配列にオブジェクトリテラルを変換「convertObjectToList」と呼ばれる関数を書く: 引数:JavaScript配列をオブジェクトに追加しますか?

{ 
    name: 'Holly', 
    age: 35, 
    role: 'producer' 
} 

戻り値:関数ができるはずであることを

[['name', 'Holly'], ['age', 35], ['role', 'producer']] 

注意上記の正確なサンプルだけでなく、このようなオブジェクトを扱うことができます。

などです。これを処理することも、単純なキーと値のペアを含む他のオブジェクトを処理することもできます。

{ 
    species: 'canine', 
    name: 'Bowser', 
    weight: 45 
} 

は、私はあなたがどのように私に言うことができ、オブジェクトのサイズを取得してから、[番号]の値とループのために一度にキー配列を割り当てることによって、配列にそれを回すことを試みましたこれを行うには、私がsizex(obj1)を呼び出すとき。私は3を得るが、convertObjectToList(obj1)を呼び出すと;私は空の配列を取得します:[]。

私は10日ほど前にJSを受け取りましたが、一部のタスクは、私が学習の過程でやや混乱しています。どんな助けも歓迎です。ここで

は、今の私が持っているコードです:

var names = []; 
var values = []; 

var sizex = function(obj) { 
    var num = 0; 
    var lol; 
    for (lol in obj) { 
     if (obj.hasOwnProperty(lol)) num++; 
    } 
    return num; 
}; 

function convertObjectToList(obj) { 
    // your code here 



    for (j = 0; j < sizex; j++) { 

     for (var name in obj) { 
      names[j] = name; 

      values[j] = obj[name]; 
     } 
    } 
    return names.concat(values); 
} 


var obj1 = { 
    name: 'Holly', 
    age: 35, 
    role: 'producer' 
} 

sizex(obj1); 
convertObjectToList(obj1); 

は、両方のコードが動作し、皆さんをありがとう第二のコードはよりシンプルですが、ウェブサイトが「偽= converts_some_other_data」と言って私にエラーを与え、最初のコードが働いていました完全に。再度、感謝します。 Object.entries

+0

var sizex = Object.keys(obj).lengthを使用できます。 – Smiranin

答えて

5

あなたは正確に行いES2017内の関数がありObject.keys()map()

var data = { name: 'Holly', age: 35, role: 'producer' } 
 

 
function toArray(obj) { 
 
    return Object.keys(obj).map(e => [e, obj[e]]) 
 
} 
 

 
console.log(toArray(data))

2

でこれを行うことができます。

const convertObjectToList = Object.entries; 

convertObjectToList({ 
    name: 'Holly', 
    age: 35, 
    role: 'producer' 
}); 

// [['name', 'Holly'], ['age', 35], ['role', 'producer']] 

node.jsのバージョンで動作します(7.2.0)。フラグなどはありません。それはおそらく以前のバージョンでも機能しますが、私はどれくらい前に戻っているか分かりません。

関連する問題