将对象属性相乘

时间:2016-10-26 09:02:18

标签: javascript arrays json object

有人告诉我如何增加对象的属性?我需要这个对象乘以房产价格的数量并放在一起

var menu = [  
       {  
          "id": 5,
          "price": 13,
          "count": 2
       },
       {  
          "id": 8,
          "price": 7,
          "count": 3
       },
       {
            "id": 9,
            "price": 17,
            "count": 1
       }
    ]

var sum = 0;
for (var key in menu) {
    for (var key1 in menu[key]) {
        //console.log(key1);
        if (key1 == 'price'){
            price += menu[key][key1];
        }

    }

}

但我不知道如何乘以计数属性

3 个答案:

答案 0 :(得分:0)

您可以将Array.prototype.mapArray.prototype.reduce一起使用。

.map采用回调函数,该函数将每个项目的价格乘以 count 并创建一个新的array,如下所示:

[26,21,17]

.reduce也会进行回调,迭代新的创建数组,总结相乘的价格,结果为:

64



let menu = [  
  {  
    "id": 5,
    "price": 13,
    "count": 2
  },
  {  
    "id": 8,
    "price": 7,
    "count": 3
  },
  {
    "id": 9,
    "price": 17,
    "count": 1
  }
]


let sum = menu.map(p => p.price * p.count).reduce((a,b) => a + b)

console.log("Total:",sum)




答案 1 :(得分:-1)

你可能想要这样的东西:

public class EmployeeRepository
{
    var optionsBuilder = new DbContextOptionsBuilder<effMercContext>();
    // add necessary options
    public Employee GetByID(int id)
    {
        using (effMercContext db = new effMercContext(optionsBuilder.Options))
        {

        }
    }
}

你可以通过创建一个对象并添加一个原型(节省内存和时间)或每次都以这种方式构建它来做到这一点。

否则你可以这样做:

{
    "id": 5,
    "price": 13,
    "count": 3,
    "value": function() {return this.price * this.count;}
}

答案 2 :(得分:-2)

假设您要计算总和

&#13;
&#13;
var menu = [
    {
    "id": 5, "price": 13, "count": 2 }, {
    "id": 8, "price": 7, "count": 3 }, { "id": 9, "price": 17, "count": 1 } ];
    var sum = 0, item;
    for(item in menu)
    {
      sum += menu[item].price * menu[item].count;
    }
    console.log(sum);
&#13;
&#13;
&#13;