2017-10-01 7 views
0

私は配列の配列を持っており、そのような辞書を返したいと思います。配列の配列を二項JavaScript

function retFunc(array) { 
var dict ={}; 
for(var i=0; i<=array.length-1;i++){ 
dict={[array[i][0]] : array[i][1]} 
} 
return dict 
} 

retFunc([['a','b'],'['c','d']]) 

output 
{ c : 'd'} 

戻り値は最後のキーと値のペアのみを返します。すべてのキーと値のペアを返すが、dict + = {[array [i] [0]]:array [i] [1]}のようなことはしない。

+0

でドキュメントを見つけることができます – mplungjan

答えて

1
あなたは変数のdictに新しいオブジェクトを割り当てる意味

dict={[array[i][0]] : array[i][1]} 

を行っている

。追加しません! dictオブジェクトに追加したい場合。これを書く:

dict[array[i][0]] = array[i][1]; 
0

あなたが代わりに

function retFunc(array) { 
 
var dict ={}; 
 
for(var i=0; i<=array.length-1;i++){ 
 
dict[array[i][0]] = array[i][1]; 
 
} 
 
return dict 
 
} 
 

 
console.log(retFunc([['a','b'],['c','d']]))

0

を行うすべてのキー値をマッピングするためにdict[array[i][0]] = array[i][1];を使用する必要があります。

function retFunc(array) { 
 
var dict ={}; 
 
for(var i=0; i<=array.length-1;i++){ 
 
dict[array[i][0]] = array[i][1]; 
 
} 
 
return dict 
 
} 
 

 
var x = retFunc([['a','b'],['c','d']]); 
 

 
console.log(x);

0

配列からだけでなく、タイプミスを削除し、あなたの辞書にObject

key:valueペアを追加するdict[array[i][0]] = array[i][1]として使用割り当て。

function retFunc(array) { 
 
    var dict = {}; 
 
    for (var i = 0; i <= array.length - 1; i++) { 
 
    dict[array[i][0]] = array[i][1] 
 
    } 
 
    return dict 
 
} 
 

 
console.log(retFunc([ 
 
    ['a', 'b'], 
 
    ['c', 'd'] 
 
]))

0

あなたが希望のキーに直接代入を使用することができobjectキー=値の代入、

function retFunc(array) { 
 
    var dict = {}; 
 
    for (var i = 0; i <= array.length - 1; i++) { 
 
    dict[array[i][0]] = array[i][1]; 
 
    } 
 
    return dict; 
 
} 
 

 
console.log(retFunc([ 
 
    ['a', 'b'], 
 
    ['c', 'd'] 
 
]));

0

で、次のように試してみてください。

dict[array[i][0]] = array[i][1]; 

function retFunc(array) { 
 
    var dict = {}; 
 
    for (var i = 0; i <= array.length - 1; i++) { 
 
      dict[array[i][0]] = array[i][1]; 
 
    } 
 
    return dict; 
 
} 
 

 
console.log(retFunc([['a', 'b'], ['c', 'd']]));

より機能的なアプローチは、オブジェクトの部分を収集するためのPAとして配列を取り込むため

  • spread syntax ...

    function retFunc(array) { 
     
        return Object.assign(...array.map(([k, v]) => ({ [k]: v }))); 
     
    } 
     
    
     
    console.log(retFunc([['a', 'b'], ['c', 'd']]));

  • 1

    それは、.map()spread syntaxObject.assignと非常にシンプルだし、パラメータの非構造:

    function retFunc(arr) { 
     
        return Object.assign({}, ...arr.map(([k, v]) => ({[k]: v}))); 
     
    } 
     
    
     
    console.log(retFunc([['a','b'],['c','d']]));

    0

    これはArray.reduce関数の最適な候補です。以下は、例のためにArray.reduceがどのように機能するかを示すコメント付きの例です。また、あなたがタイプミスを持っているように見えるMDN

    const input = [ 
     
        ['a', 'b'], 
     
        ['d', 'd'], 
     
        ['e', 'f'], 
     
    ]; 
     
    
     
    // adds key/value from `arr` to dict. 
     
    function arrayToDict(dict, arr){ 
     
        dict = dict || {}; 
     
        // take an array of two items and turn it into a key value pair. 
     
        let [key, value] = arr; 
     
        // if you don't like es6 syntax, then this is equivalent 
     
        /* 
     
        var key = arr[0]; 
     
        var value = arr[1]; 
     
        */ 
     
        
     
        dict[key] = value; 
     
        return dict; 
     
    } 
     
    
     
    // this function can be used to add any one of our pairs to a dictionary 
     
    
     
    console.log('Example1: ', arrayToDict({}, ['a', 'b'])); 
     
    
     
    // now we can use the Array Reduce function to add each pair to the dictionary. 
     
    
     
    let output = input.reduce(arrayToDict, {}); 
     
    console.log('Output:', output);