AngularJS如何对对象中的项进行分组/组织,以便在视图中显示它们

时间:2016-09-30 10:12:11

标签: javascript angularjs object

我的网址包含以下参数: http://localhost:9000/#/checkout/?title1=Sodadrink&quantity1=2&price1=129.95&title2=PolaryteGlasses&quantity2=1&price2=59.95#%2F

我正在使用$location.search()获取它们,它在Object中返回它们就好了:

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 : ---

我陷入了这个部分,我虽然计算了对象内部的总项目数,但是他们通过创建一个新的对象将它们分组为3组,但是没有用完。 你能帮助我吗?感谢。

2 个答案:

答案 0 :(得分:1)

你必须写一些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]})
    }
}

您的数据将位于输出变量

答案 1 :(得分: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]})
  }
}

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