2014-03-02 40 views
4

在python中,我可以使用元組作爲字典的關鍵字。什麼是在JavaScript中的等效?javascript中使用pair/tuple作爲多值鍵/索引的關聯數組

>>> d = {} 
>>> d[(1,2)] = 5 
>>> d[(2,1)] = 6 
>>> d 
{(1, 2): 5, (2, 1): 6} 

對於那些有興趣誰,我有兩個數組...

positions = ...

normals = ...

我需要位置/正常對的第三組,但不希望重複配對。我的關聯數組讓我檢查是否有現有的[(posIdx,normalIdx)]對重用或創建一個,如果我不這樣做。

我需要一些使用雙值鍵索引的方法。我可以使用一個字符串,但這似乎比兩個數字慢一點。

+0

目前還沒有真正的(即將推出的JavaScript版本將包括一個) - 是否有任何特殊原因要這樣做? –

+0

你想要做什麼?我的意思是,你實際上可以用你的元組的一個字符串表示作爲數組的一個鍵,但是想到它會有點痛苦。你也可以在他的回答中使用實際的二維關聯數組以及Stepan提到的數組。我想如果你說出你正在做的事情,你會得到更好的答案,並且可能展示你如何使用上述類型的數據結構。 –

+0

任何一個位置都可以有多個法線,反之亦然? –

回答

5

Javascript沒有元組,但可以使用數組。

>>> d = {} 
>>> d[[1,2]] = 5 
>>> d[[2,1]] = 6 
>>> d 
Object {1,2: 5, 2,1: 6} 
+5

注意這只是使用數組的字符串表示形式,也就是'd ['1,2']'與'd [[1,2]]'相同。 –

0

您可以使用地圖:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

對象的鍵是字符串和符號,而他們可以爲一個地圖,包括函數,對象和任何原始任何 值。

這將避免潛在的問題,只是作爲數組的字符串表示形式的鍵。

d = {}; 
 
d[[1,2]] = 5; 
 
d[[2,1]] = 6; 
 
console.log("d[[1,2]]:", d[[1,2]]); 
 
console.log("d['1,2']:", d['1,2']); 
 

 
m = new Map(); 
 
ak1 = [1,2]; 
 
ak2 = [1,2]; 
 
m.set([1,2], 5); 
 
m.set([2,1], 6); 
 
m.set(ak1, 7); 
 
console.log("m.get('1,2'):", m.get('1,2')); 
 
console.log("m.get([1,2]):", m.get([1,2])); 
 
console.log('m.get(ak1):', m.get(ak1)); 
 
console.log('m.get(ak2):', m.get(ak2));

注意,它使用的密鑰,而不是值的變量的參考。

相關問題