【问题标题】:How Can i Change the style of my angularjs object?如何更改 angularjs 对象的样式?
【发布时间】:2015-10-02 06:39:44
【问题描述】:

我没有使用 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"}
} 

【问题讨论】:

  • 首先,您需要澄清第一个sn-p中的对象,在当前形式下它是无效的。
  • 不,实际上我不知道我该如何开始解决这个问题,或者我需要遵循什么方式,我只需要开始完成它的第一种方式> >
  • 没有我从控制台日志中获取的第一个对象,我确定它
  • 下划线或 lodash 对这类东西非常有帮助。有什么特别需要将对象更改为前端的样子吗?

标签: javascript json angularjs object


【解决方案1】:

这是一个 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;

看看你能不能把这个放在哪里

【讨论】:

  • 这让我想删除我的答案。
  • 你在开玩笑吗?这是一个解决方案吗?问这样的事情我没那么傻 -_- result[obj.Room] = { 9: obj[9], 10: obj[10] }; ??????
  • 是的,这就是解决方案。你认为 result[obj.Room] = { 9: obj[9], 10: obj[10] }; 有什么问题?
【解决方案2】:

这对我来说可能是浪费时间。但我确实在此过程中学到了一些东西。如果您任意将数组键(?)重新分配给整数,它会改变长度吗?也许吧。

正如其他人指出的那样,您的对象无效。我会假设你的意思是有一个对象数组。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多