我如何更改angularjs对象的样式?

时间:2015-07-13 20:30:14

标签: javascript json angularjs object

我没有那种经验与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"}
} 

2 个答案:

答案 0 :(得分:0)

这对我来说可能是浪费时间。但我确实沿途学到了一些东西。如果你随意将数组键(?)重新分配给一个整数,它会改变长度吗?也许

weird array length

正如其他人指出的那样,你的对象无效。我假设你想要一个对象数组。

我不知道' 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;

看看你是否可以弄清楚这个

的位置