2017-05-22 18 views
-1

これは代入のためのものですが、何時間も使用していません。投票しないでください - 専門家でさえも時間を置いて質問すると言われました:JavaScript配列の配列からRETURNオブジェクトへの関数を作成

nの引数として配列の配列を取り込む関数を作成する必要があります。下の私のコードの終わり。 (stackoverflowのフィルタは、私が流暢な質問をするのは厄介です)。

関数は 'return'を使用し、 'console.log'は使用しないでください。あなたの助けをいただければ幸いです

var orders = [ 
 
    [ 
 
     ['first', 1], ['second', 2], ['third', 3], ['fourth', 4] 
 
    ], 
 
    [ 
 
     ['why', 'yes'], ['this', 'no'], ['if', 'so'], ['tit', 'tat'] 
 
    ] 
 
]; 
 

 
function arrayToObject(array) { 
 
    obj = {}; 
 
    for (var i= 0; i< array.length; i++){ 
 
    for (var j= 0; j< array[i].length; j++){ 
 
     obj[array[i][j][0]] = array[i][j][1]; 
 
    } 
 
    return obj; 
 
    } 
 
} 
 
arrayToObject(orders); 
 
//This function returns: 
 
//{first: 1, second: 2, third: 3, fourth: 4} 
 

 
//However I need it to return this array: 
 
//[{first: 1, second: 2, third: 3, fourth: 4} 
 
//{why: 'yes', this: 'no', if: 'so, tit: 'tat'}]

:ここに私のコードです。再度、感謝します。

+0

あなたはこのようなものを返すことはできません...同じオブジェクトまたは配列になければなりません...必要な出力の例を修正してください。 – tanaydin

答えて

0

これはあなたが必要な出力の場合はわかりません。これは各配列要素をオブジェクトに変換し、作成されたオブジェクトの配列を返します。

var orders = [ 
    [ 
     ['first', 1], ['second', 2], ['third', 3], ['fourth', 4] 
    ], 
    [ 
     ['why', 'yes'], ['this', 'no'], ['if', 'so'], ['tit', 'tat'] 
    ] 
]; 

function arrayToObject(array) { 
    var result = []; 
    for (var i= 0; i< array.length; i++){ 
    var obj = {};//obj holds the object that the next element in the array is converted to. 
    for (var j= 0; j< array[i].length; j++){ 
     obj[array[i][j][0]] = array[i][j][1]; 
    } 
    result.push(obj); //add obj to a result once we converted all elements of array[i] 
    } 
    return result; //what is returned needs to be out of the for loop 
} 
arrayToObject(orders); 

//output: 
//[ { first: 1, second: 2, third: 3, fourth: 4 }, 
    { why: 'yes', this: 'no', if: 'so', tit: 'tat' } ] 
+0

ありがとうございました!これはうまくいった。大変感謝しています:) – Joan

+0

説明は明らかです。助けてうれしい! –

0

return文は、内部ではなくfor文の下にある必要があります。 2番目の配列を取得する前に、コードが関数を終了しています。

function arrayToObject(array) { 
    obj = []; 
    for (var i= 0; i< array.length; i++){ 
    obj[i] = {}; 
    for (var j= 0; j< array[i].length; j++){ 
     obj[i][array[i][j][0]] = array[i][j][1]; 
    } 
    } 
    return obj; 
} 
+0

このフォーマットは、配列内のすべての項目を含む単一のオブジェクトを返します。それらは正しくペアになっていますが、配列内の各配列をそれぞれ独自のオブジェクトにする必要があります。 – Joan

+0

これはそうではありません。 – tanaydin

+0

なぜですか?代わりにオブジェクトの配列を返したいですか? –

0

私のコードをEcmaScript6に変換し、最初のループの後にreturn文を移動しました。すべてを一度に返すために、私はobjを配列に変換し、オブジェクトを別々に押し込んでいました。

var orders = [ 
    [ 
    ['first', 1], ['second', 2], ['third', 3], ['fourth', 4] 
    ], 
    [ 
    ['why', 'yes'], ['this', 'no'], ['if', 'so'], ['tit', 'tat'] 
    ] 
]; 

function arrayToObject(array) { 
    let obj = []; 
    for (let current_list of array){ 
    let _tmpObj = {}; 
    for (let values of current_list){ 
     _tmpObj[values[0]] = values[1]; 
    } 
    obj.push(_tmpObj); 
    } 
    return obj; 
} 

console.log(arrayToObject(orders)); 

それは出力です:

[ 
    { first: 1, second: 2, third: 3, fourth: 4 }, 
    { why: 'yes', this: 'no', if: 'so', tit: 'tat' } 
] 
関連する問題