javascript - 函数中的条件选择

标签 javascript arrays json vue.js

我有以下餐厅订单对象。

   var obj = {
      orders: [
        null,
        {
          date: "2018-07-09 10:07:18",
          orderVerified : true,
          item: [
            {
              name: "apple juice",
              price: 3.9,
              quantity: 1,
              isDrink: true 
            },
            {
              name: "Hawaii pizza",
              price: 7,
              quantity: 2,
              isDrink: false
            }
          ]
        },
        {
          date: "2018-07-09 10:07:30",
          orderVerified : false,
          item: [
            {
              name: "Warmer Topfenstrudel",
              price: 3.9,
              quantity: 1,
              isDrink: false
            }
          ]
        },
        {
          date: "2018-07-09 15:07:18",
          orderVerified : true,
          item: [
            {
              name: "Coca Cola 2 l",
              price: 12.9,
              quantity: 3,
              isDrink:true
            }
          ]
        },
        {
          date: "2018-06-13 10:07:18",
          orderVerified : true,
          item: [
            {
              name: "Wiener Schnitzel vom Schwein",
              price: 9.9,
              quantity: 2,
              isDrink: false
            }
          ]
        }
      ]
    };

如果 isDrink 的值为 true,我想总结商品的价格 * 商品数量。 我试过使用这个函数,它得到所有项目的总数。但我可以检查检查 isDrink 是真还是假,但我如何总结饮料价格 * 数量?

 fullTotal: function(arr) {
    if (arr!=''){
    return arr.reduce((sum, order) => {
      return sum + order.item.reduce((itemSum, item) => (
        itemSum + (item.price * item.quantity)
      ), 0)
    },0)}
    else {return 0}
  },

请给我一些建议。谢谢!

最佳答案

你必须:

  • 根据您的情况从 null 值中过滤数组
  • 从非饮料中过滤项目 [property isDrink]

var obj = {
  orders: [
    null,
    {
      date: "2018-07-09 10:07:18",
      orderVerified: true,
      item: [{
          name: "apple juice",
          price: 3.9,
          quantity: 1,
          isDrink: true
        },
        {
          name: "Hawaii pizza",
          price: 7,
          quantity: 2,
          isDrink: false
        }
      ]
    },
    {
      date: "2018-07-09 10:07:30",
      orderVerified: false,
      item: [{
        name: "Warmer Topfenstrudel",
        price: 3.9,
        quantity: 1,
        isDrink: false
      }]
    },
    {
      date: "2018-07-09 15:07:18",
      orderVerified: true,
      item: [{
        name: "Coca Cola 2 l",
        price: 12.9,
        quantity: 3,
        isDrink: true
      }]
    },
    {
      date: "2018-06-13 10:07:18",
      orderVerified: true,
      item: [{
        name: "Wiener Schnitzel vom Schwein",
        price: 9.9,
        quantity: 2,
        isDrink: false
      }]
    }
  ]
};

function fullTotal(arr) {
  if (arr != '') {
    return arr.filter(order => order != null).reduce((sum, order) => {
      return sum + order.item.filter(item => item.isDrink).reduce((itemSum, item) => (
        itemSum + (item.price * item.quantity)
      ), 0)
    }, 0)
  } else {
    return 0
  }
}

console.log(fullTotal(obj.orders));

关于javascript - 函数中的条件选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51574177/

相关文章:

javascript - 为什么这个javascript不正确?

c - 类型 "char *"和类型 "char[10]"之间的区别

javascript - 为什么 onChange 回调中 $scope.data 的更改不会重新绘制 chart.js?

ruby - 什么决定了可变类上的 bang 方法是否返回 `nil` ?

C 旋转字符串程序?

c# - 具有内部属性的 JSON Serializer 对象

javascript - 如何向 KendoUI 数据源组件添加新记录

javascript - 从一个对象创建多个选择选项

javascript - JavaScript 函数的原型(prototype)属性的初始值是多少?

javascript - 如何将 javascript 对象格式化为模式数据的 JSON 对象?