возвращая неопределенное значение, используя ООП в Javascript - PullRequest
2 голосов
/ 18 мая 2019

используя функцию конструктора, я получаю неопределенное значение, используя return. x - это объект, состоящий из взрослых, детей, старших, pwd и т. д., используя 'console.log (adult + ch + sn + pwd)', он показывает общее значение, когда пытается вернуть переменные, он дает неопределенное значение, используя pax.total. ().

я что-то забыл?

x состоит из объекта с массивом, это из запроса mongodb


 [{ _id: 5cc00abe4e9e8b0017749a4c,
    adults: 1,
    children: 0,
    senior: 0,
    pwd: 0,
    totalFare: 100,
    time: '01:00 pm',
    date: '4/24/2019',
    fare: 100,
    Date: 2019-04-24T07:05:34.826Z,
    __ttl: 2088-12-27T14:12:04.418Z,
    __v: 0,
    ticketNumber: 244060726 },
  { _id: 5cd80e956cb0c30017989abd,
    adults: 0,
    children: 1,
    senior: 1,
    pwd: 0,
    totalFare: 200,
    fare: 100,
    Date: 2019-05-12T12:16:21.585Z,
    __ttl: 2089-02-02T00:36:16.500Z,
    __v: 0,
    ticketNumber: 472953448 },
  { _id: 5cd89d35bdc9390017ec1330,
    adults: 1,
    children: 0,
    senior: 1,
    pwd: 1,
    totalFare: 286,
    fare: 110,
    Date: 2019-05-12T22:24:53.052Z,
    __ttl: 2089-02-02T20:52:14.758Z,
    __v: 0,
    ticketNumber: 929930630 } ]
function TotalPax(obj) {
  let adults = 0;
  let ch = 0;
  let sn = 0;
  let pwd = 0;
  this.x = obj;
  this.total = function() {

    this.x.forEach(function(y, index) {
      adults += y.adults;
      ch += y.children;
      sn += y.senior;
      pwd += y.pwd;
      if (index === (x.length - 1)) {
        adults + ch + sn + pwd;
        return adults;
      }
    });
  };
}
const pax = new TotalPax(x);
var TotalP = pax.total();
console.log(pax.total());

1 Ответ

0 голосов
/ 18 мая 2019

Из вашего кода это выглядит так: x - это массив объектов вроде:

{adults:2, children:4, senior:1, pwd:5}

и total() должны дать общее количество всех этих чисел для всего массива. Если это так, то reduce() - лучший выбор, чем forEach(). Вы можете легко вернуть один номер с помощью:

this.total = function() {
    return this.x.reduce((count, y) => count + y.adults + y.children + y.senior +  y.pwd, 0)   
  };

Это сложит все числа взрослых, детей, старших, pwd из каждого ряда массива в одно число:

function TotalPax(obj) {
  this.x = obj;
  this.total = function() {
    return this.x.reduce((count, y) => count + y.adults + y.children + y.senior + y.pwd, 0)

  };
}

let x = [
  {adults:2, children:2, senior:1, pwd:5},
  {adults:1, children:4, senior:5, pwd:5}
]

const pax = new TotalPax(x);
var TotalP = pax.total();
console.log("Total:", pax.total());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...