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));
添加回答
举报