3 回答

TA貢獻1869條經驗 獲得超4個贊
我開始工作JavaScript并嘗試一些基本的東西,所以我遇到了一個問題。
這是我的dictionary
var dic = {
'a': {1:'alpha', 2:'beta', 3:'delta'},
'b' : {1:1, 2:2000, 3:50},
'c' : {1:-9, 2:2500, 3:51},
'd' : {1:3, 2:-1000, 3:56},
'e' : {1:-4, 2:2005, 3:-44},
}
所以,我想重新排序數據,以便最終我有一個像這樣的字典
var sol = {
'alpha' : [1, -9, 3, -4],
'beta' : [2000, 2500, -1000, 2005],
'delta' : [50, 51, 56, -44],
}
a因此,我將in 中的值作為鍵dic,然后根據哪個索引a將相應的值b,c,d,e取出并放入數組中。
這就是我開始做的事情:
for(var i = 0; i<Object.keys(dic).length;i++){
for(var j=0; j<Object.keys(dic['a']).length; j++){
console.log(dic[i][j])
}
}
但后來我發現我無法真正訪問信息dic[i][j],我完全迷失了。
有人可以給我一些建議嗎?

TA貢獻1840條經驗 獲得超5個贊
你在迭代中走在正確的道路上。如果您使用 for/in 迭代對象,您可以看到您將擁有所需的所有信息:
let i = 1;
for (let x in dic) {
console.log(dic[x][i])
i++
}
所以第一次迭代會給你:
for (let x in dic) {
console.log(dic[x][1])
}
控制臺顯示:
// alpha
// 1
// -9
// 3

TA貢獻1799條經驗 獲得超6個贊
看起來我發帖速度很慢,但這將提供您正在尋找的內容......
var dic = {
'a': {
1: 'alpha',
2: 'beta',
3: 'delta'
},
'b': {
1: 1,
2: 2000,
3: 50
},
'c': {
1: -9,
2: 2500,
3: 51
},
'd': {
1: 3,
2: -1000,
3: 56
},
'e': {
1: -4,
2: 2005,
3: -44
},
}
var dicKeys = Object.keys(dic);
var sol = {};
var newKeyList = Object.keys(dic.a);
var newValueList = Object.values(dic.a);
for (var newIndex = 0; newIndex < newKeyList.length; newIndex++) {
var newKey = newKeyList[newIndex];
var newValue = newValueList[newIndex];
sol[newValue] = [];
dicKeys.forEach(function(key) {
if (key == 'a') {
return;
}
sol[newValue].push(dic[key][newKey]);
});
}
console.log(JSON.stringify(sol));
添加回答
舉報