我没有那种经验与json abject合作因为我需要你的帮助请:( 我有这个对象
var obj = {[
{
9 : "Alfreds Futterkiste",
10 : "Berlin",
Room : "201"
},
{
9 : "Vaffeljernet",
10: "Århus",
Room : "204"
}
]
}
我需要的是如何将此对象的样式更改为这种更改方式
{
201:{9:"Alfreds Futterkiste",10:"Berlin"},
204:{9:"Vaffeljernet",10:"Århus"}
}
答案 0 :(得分:0)
这对我来说可能是浪费时间。但我确实沿途学到了一些东西。如果你随意将数组键(?)重新分配给一个整数,它会改变长度吗?也许
正如其他人指出的那样,你的对象无效。我假设你想要一个对象数组。
我不知道' 9'和' 10'作为对象键有任何意义,但这就是我之前想要点亮我的笔记本电脑的方式。无论如何,这里充满了荣耀:https://jsfiddle.net/v0jetgex/
是的,就像ajmajmajma提到的那样,lodash帮了忙。很多。
var arr = [
{
9: "Alfreds Futterkiste",
10: "Berlin",
Room: "201"
},
{
9: "Vaffeljernet",
10: "Århus",
Room: "204"
}
];
var newArr = [];
var newerArr = [];
_.each(arr, function (obj) {
var room = _.result(_.pick(obj, "Room"), "Room");
var nine = _.result(_.pick(obj, "9"), "9");
var ten = _.result(_.pick(obj, "10"), "10");
newArr.push(room);
newerArr.push({
'9': nine,
'10': ten
});
});
var groups = _.groupBy(newArr, function (a, b) {
return a.replace(/\s+/g, '');
});
_.toArray(groups).forEach(function (group, index) {
_.extend(group, {
'9': _.result(newerArr[index], '9'),
'10': _.result(newerArr[index], '10')
});
delete group[0];
});
console.log('groups', groups);
答案 1 :(得分:0)
这是一个plunker(只是JS):http://plnkr.co/edit/h3EndN8F6milHF2h1gAj?p=preview
var array = [
{
9 : "Alfreds Futterkiste",
10 : "Berlin",
Room : "201"
},
{
9 : "Vaffeljernet",
10: "Århus",
Room : "204"
}
];
var result = {};
array.forEach(function(obj) {
//function runs once for each element in the array, obj = element at current index
result[obj.Room] = {
9: obj[9],
10: obj[10]
};
});
console.log(result);
基础是:[]是一个数组; {}是一个对象。在数组中,事物由它们的索引(0,1,2 ......)标识。在物体中他们有钥匙。所以
obj = {"201": {'key1':'value1', 'key2': 'value2'}}
表示你有一个对象,你在其中有另一个嵌套对象(由它的键标识 - 201)。嵌套对象有2个属性。第一个属性有一个键(key1)和一个值(value1)
obj["201"] is {'key1':'value1', 'key2': 'value2'}
编辑:
我想你想要一个更通用的解决方案
var newObj ={};
Object.keys(obj).forEach(function(key) {
if(key !== 'Room') {
newObj[key] = obj[key];
}
});
result[obj.Room] = newObj;
看看你是否可以弄清楚这个
的位置