2017-04-20 17 views
0

キーに基づいて値の配列を返そうとしています。私が返そうとしている値は、ユーザーが入力したキーに依存しています。しかし、私がforループを反復しているとき、私はエラー:TypeError: Cannot read property 'length' of undefinedを得ています。私は間違って何をしていますか?私が正しく理解している場合javascriptオブジェクト内の配列へのアクセス

var obj = { 
    14: ['abc', 'def', 'gh', 'i', 'k'], 
    90: ['asdf','xxc' , 'd'], 
    92: ['def', 'dr' , 'vvd', 'off'] 
} 

exports.function(key) = { 
    var temp = {}; 
    for(var i = 0; i < obj.key.length; i++){ 
     temp[i] = obj.key[i]; 
    } 
    return temp; 
}; 
+2

[オブジェクトのプロパティを介して反復]の可能な複製を質問/ 8312459/iterate-through-object-properties) – Andreas

+0

'object.key'は文字通り' key'と呼ばれる属性を探しています。代わりに 'obj [key]'を試してください –

+0

キーはユーザ入力に依存していますが、この状況で値の配列にアクセスするにはどうすればいいですか@KieranE – learningToCode

答えて

0

var obj = { 
    14: ['abc', 'def', 'gh', 'i', 'k'], 
    90: ['asdf','xxc' , 'd'], 
    92: ['def', 'dr' , 'vvd', 'off'] 
} 

function test(key) = { 
    return obj[key]; 
}; 


test(14) //returns ['abc', 'def', 'gh', 'i', 'k'] 
test(92) //returns ['def', 'dr' , 'vvd', 'off'] 
+1

@OPこの男は間違いなく私の前です。しかし、それは本当に簡単です。 –

1

を、私は私のコメントで言ったように、object.keyは文字通りkeyという属性を探しています。ユーザーの入力によって定義された属性にアクセスする場合は、[]構文を使用する必要があります。あなたの場合、[key]

この試し:http://stackoverflow.com/(

exports.function(key) = { 
    return obj[key]; 
}; 

あるいは、snippit形態において、

var obj = { 
 
    14: ['abc', 'def', 'gh', 'i', 'k'], 
 
    90: ['asdf','xxc' , 'd'], 
 
    92: ['def', 'dr' , 'vvd', 'off'] 
 
}; 
 

 
function getKey(key){ 
 
    return obj[key]; 
 
} 
 

 
console.log(getKey(14)) 
 
console.log(getKey(92))

+0

right、nvm前のコメントこれは正しい方法です – learningToCode