Как мне улучшить этот код с помощью карты или фильтра?

Мне нужно улучшить функцию ventasVendedora(), я получаю эти три for, но я думаю, что это можно упростить. Кроме того, я должен проверить это. Я подумал о map или filter, потому что это помогло бы мне иметь array с компонентами, продаваемыми каждым продавцом для другого товара, но я даже не знаю, как его написать.

Здесь пункт и в конце мое решение:

ventasVendedora(nombre): получает имя продавца по параметру и возвращает общую сумму продаж, совершенных этим продавцом.

const vendedoras = ["Ada", "Grace", "Hedy", "Sheryl"];
    
    const ventas = [
        [100, 4, 2, 2019, 'Grace', 'Centro', ['Monitor GPRS 3000', 'Motherboard ASUS 1500']],
        [101, 1, 1, 2019, 'Ada', 'Centro', ['Monitor GPRS 3000', 'Motherboard ASUS 1500']],
        [102, 2, 1, 2019, 'Grace', 'Caballito', ['Monitor ASC 543', 'Motherboard MZI', 'HDD Toyiva']],
        [103, 10, 1, 2019, 'Ada', 'Centro', ['Monitor ASC 543', 'Motherboard ASUS 1200']],
        [104, 12, 1, 2019, 'Grace', 'Caballito', ['Monitor GPRS 3000', 'Motherboard ASUS 1200']],
        [105, 21, 3, 2019, 'Hedy', 'Caballito', ['Monitor ASC 543', 'Motherboard ASUS 1200', 'RAM Quinston']]
    ];
    
    const precios = [
        ['Monitor GPRS 3000', 200],
        ['Motherboard ASUS 1500', 120],
        ['Monitor ASC 543', 250],
        ['Motherboard ASUS 1200', 100],
        ['Motherboard MZI', 30],
        ['HDD Toyiva', 90],
        ['HDD Wezter Dishital', 75],
        ['RAM Quinston', 110],
        ['RAM Quinston Fury', 230]
    ];
    
    
    const ventasVendedora = (nombre) => {
        let contador = 0;
        for (let i = 0; i < ventas.length; i++) {
            if (ventas[i][4] == nombre) {
                for (let x = 0; x < ventas.length; x++)
                    for (let y = 0; y < precios.length; y++) {
                        if (precios[y][0] == ventas[i][6][x]) {
                            contador += precios[y][1]
                        }
                    }
            }
        }
        console.log(contador)
    };

ventasVendedora('Ada');
1
задан 28.11.2019, 21:45
1 ответ

Немного asГ - я ocurriГі (не, если то, что ты ищешь) отделяя каждую функциональность:

const vendedoras = ["Ada", "Grace", "Hedy", "Sheryl"];

const ventas = [
    [100, 4, 2, 2019, 'Grace', 'Centro', ['Monitor GPRS 3000', 'Motherboard ASUS 1500']],
    [101, 1, 1, 2019, 'Ada', 'Centro', ['Monitor GPRS 3000', 'Motherboard ASUS 1500']],
    [102, 2, 1, 2019, 'Grace', 'Caballito', ['Monitor ASC 543', 'Motherboard MZI', 'HDD Toyiva']],
    [103, 10, 1, 2019, 'Ada', 'Centro', ['Monitor ASC 543', 'Motherboard ASUS 1200']],
    [104, 12, 1, 2019, 'Grace', 'Caballito', ['Monitor GPRS 3000', 'Motherboard ASUS 1200']],
    [105, 21, 3, 2019, 'Hedy', 'Caballito', ['Monitor ASC 543', 'Motherboard ASUS 1200', 'RAM Quinston']]
];

const precios = [
    ['Monitor GPRS 3000', 200],
    ['Motherboard ASUS 1500', 120],
    ['Monitor ASC 543', 250],
    ['Motherboard ASUS 1200', 100],
    ['Motherboard MZI', 30],
    ['HDD Toyiva', 90],
    ['HDD Wezter Dishital', 75],
    ['RAM Quinston', 110],
    ['RAM Quinston Fury', 230]
];

// Obtenemos los productos vendidos
const productos = (nombre) => {
  let _productos = [];
  ventas.forEach((venta) => {
    if(venta[4] == nombre) {
      _productos.push(...venta[6])
    }
  });
  
  return _productos;
}

// obtenemos el total vendido
const total_vendido = (productos) => {
  let _total = 0;
  productos.forEach((producto) => {
    precios.forEach((precio) => {
      if (producto == precio[0]){
        _total += precio[1];
      }
    })
    
  })
  return _total;
}
let productos_vendidos = productos("Grace");

console.log(total_vendido(productos_vendidos));
0
ответ дан 01.12.2019, 10:40