【问题标题】:AngularJS How to group/organize items in object in order to show them in the viewAngularJS如何对对象中的项目进行分组/组织以便在视图中显示它们
【发布时间】:2016-09-30 10:12:10
【问题描述】:

我有一个带有一些参数的 URL,例如: http://localhost:9000/#/checkout/?title1=Sodadrink&quantity1=2&price1=129.95&title2=PolaryteGlasses&quantity2=1&price2=59.95#%2F

我用$location.search() 来获取它们,它可以在类似的对象中很好地返回它们:

Object
   price1: "129.95"
   price2: "59.95"
   quantity1: "2"
   quantity2: "1"
   title1: "Sodastream"
   title2: "Polaryte – Óculos de Sol"
  __proto__: Object

这很酷,但现在我需要将每个项目分组:

[item]
   title : Sodastream
   price : 129.95
   quantity : 1
[item]
   title : ---
   price : ---
   quantity : ---

我被困在这部分,我虽然计算了对象内的总项目数,6,然后他们通过创建一个新对象将它们分组为 3,但没有成功。 你能帮助我吗?谢谢。

【问题讨论】:

    标签: javascript angularjs object


    【解决方案1】:

    由于 URL 中的项目数量可能会有所不同,因此最好不要硬编码任何数字。为此,我还假设每件商品都有 3 个属性 - 标题、价格和数量。

    试试这个:

    var numOfItems = Object.keys(input).length/3; // for example, 6 properties will mean 2 items
    var output = [];
    for (var i = 1; i <= numOfItems; i++) {
      if (input["title"+i]) {
        output.push({title: input["title"+i], price: input["price"+i],quantity: input["quantity"+i]})
      }
    }
    

    输出数组应该包含您指定的确切方式的对象。

    【讨论】:

    • 感谢您的快速回答,事实证明我的想法是正确的,就像您和迈克的解决方案一样。我是这样计算内部项目的: $scope.basket = []; var items = $location.search();变量计数 = 0; for (var k in items) { if (items.hasOwnProperty(k)) { ++count; } } 其中 count 将返回 6 个数字。然后我做了一个 for 循环: for (var i = 1; i
    • 我只需要更改您的代码,Chukwuemeka for (var i = 1; i
    【解决方案2】:

    您必须编写一些 javascript 才能做到这一点。

    假设你上面的对象被称为输入

    const MAX_ITEMS=9;
    var outputs = [];
    for (var i=1,i<MAX_ITEMS;i++) {
        if (inputs["item"+i]) {
            outputs.push({item: inputs["item"+i], price: inputs["price"+i],quantity: inputs["quantity"+i]})
        }
    }
    

    您的数据将在输出变量中

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 2020-12-10
      • 2019-06-28
      • 2017-05-06
      • 2014-09-24
      • 1970-01-01
      相关资源
      最近更新 更多