【问题标题】:Create object using Underscore.js使用 Underscore.js 创建对象
【发布时间】:2015-08-20 13:44:22
【问题描述】:

创建一个名为 items 的新对象的正确 Underscore.js 方法是什么,该对象由每个项目数组组成。然后我可以在一次调用中对每个 item.name 进行 POST 吗?

var items = [];

item = [{
  name: "item1",
  desc: "this is a description of item 1",
  qty: 1
},{
  name: "item2",
  desc: "this is a description of item 2",
  qty: 5
},{
  name: "item3",
  desc: "this is a description of item 3",
  qty: 3
}];

items.push(item);

【问题讨论】:

  • 项目数组无效。您需要改用{ ... } 对象语法(即item = { name: "item1", desc: "this is... }。如果您要以这种方式创建对象,您还需要在每个对象文字之后调用items.push(item);。否则您永远不会去在您的数组中包含 item 的任何内容在引用时尚未定义。
  • 谢谢,更新但不是我的问题。
  • 对不起,这个问题没有真正的意义。那些不是项目数组。它们是物体。通常,您将创建一个数组items,其中包含item 对象。如果您希望items 成为一个对象并且每个item 成为一个对象,您需要确定三个子对象的名称。
  • 好的,我明白了,也许我的措辞有误。我想访问对象项目并通过点符号访问每个项目的名称。是item1,item2,item3就可以了

标签: angularjs underscore.js


【解决方案1】:

如果我正确理解了这个问题,您希望将一组项目转换为一个对象,其中每个键都是对象的名称

例如

{
    item1: {
         name: "item1",
         desc: "this is a description of item 1",
         qty: 1
    },
    item2: { ... },
    item3: { ... },
}

如果是这种情况,那么您可以使用带有两个参数的object 函数;第一个是属性名称列表,第二个是值列表:

    var items = [{
          name: "item1",
          desc: "this is a description of item 1",
          qty: 1
        },{
          name: "item2",
          desc: "this is a description of item 2",
          qty: 5
        },{
          name: "item3",
          desc: "this is a description of item 3",
          qty: 3
        }
    ];

    var itemsAsAnObject = _.object( _.pluck(items,'name'), items)

【讨论】:

    猜你喜欢
    • 2012-05-12
    • 1970-01-01
    • 2012-02-23
    • 2015-04-22
    • 2015-12-27
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多