如何使用Object.entries(...)。forEach.every?

时间:2020-02-19 17:36:00

标签: javascript node.js reactjs

我正在使用const queryModifier = {price: "lessThan", weight: "greaterThan"}

过滤列表
const queryKeys = keys: {
      price: '1000',
      weight: '1000'
    }

const list = [
  {
    "clientOrderNumber": "N / A",
    "companyName": "Test Company",
    "createdAt": "2019-11-05 10:48:18",
    "createdBy": "test@test.com",
    "deliveryDate": "2019-11-08 10:46:37",
    "driver": "",
    "dropOff": "Kögel Trailer GmbH & Co. KG, Am Kögel-Werk, Burtenbach, Germany",
    "height": 0,
    "isPreparingTrailer": false,
    "isSmsSent": false,
    "isTrailerReady": false,
    "key": "7e249529-d089-47bb-b0ad-470f850dd8cf",
    "notes": "",
    "orderId": "",
    "pickUp": "Altenberge, Germany",
    "price": 500,
    "quantity": 1,
    "trailer": "einzeln",
    "vehicle": "Sattel",
    "vehicleClass": "engl. Anschlüsse",
    "vehicleId": "505123",
    "vehicleReadyDate": "2019-11-05 10:47:57",
    "weight": 0
  },
  {
    "additionalPrices": 0,
    "clientOrderNumber": "N / A",
    "companyName": "Test Company",
    "createdAt": "2019-10-14 16:32:12",
    "createdBy": "test@test.com",
    "deliveryDate": "2019-10-19 16:26:35",
    "driver": "",
    "dropOff": "Marville-Moutiers-Brûlé, France",
    "height": 600,
    "isPreparingTrailer": false,
    "isSmsSent": false,
    "isTrailerReady": false,
    "key": "9b7f57fd-f95e-4038-b120-a0301fdf3f31",
    "notes": "",
    "orderId": "",
    "pickUp": "Altenberge, Germany",
    "price": 0,
    "quantity": 1,
    "trailer": "2er Pack",
    "vehicle": "Anhänger",
    "vehicleClass": "50",
    "vehicleId": "123",
    "vehicleReadyDate": "2019-10-16 16:31:26",
    "weight": 12000
  },
  {
    "clientOrderNumber": "N / A",
    "companyName": "Test Company",
    "createdAt": "2019-10-14 16:25:54",
    "createdBy": "test@test.com",
    "deliveryDate": "2019-10-19 16:24:13",
    "driver": "",
    "dropOff": "Vendenheim, France",
    "height": 0,
    "isPreparingTrailer": false,
    "isSmsSent": false,
    "isTrailerReady": false,
    "key": "7e4f233f-695b-40eb-a0ca-fd78f3fa43cd",
    "notes": "",
    "orderId": "",
    "pickUp": "Altenberge, Germany",
    "price": 793,
    "quantity": 1,
    "trailer": "einzeln",
    "vehicle": "Sattel",
    "vehicleClass": "Standard",
    "vehicleId": "3340731",
    "vehicleReadyDate": "2019-10-15 16:24:58",
    "weight": 0
  },
  {
    "clientOrderNumber": "N / A",
    "companyName": "Test Company",
    "createdAt": "2019-09-26 18:32:18",
    "createdBy": "test@test.com",
    "deliveryDate": "2019-09-20 18:31:45",
    "driver": "Michal Kucharski",
    "dropOff": "Logroño, Spain",
    "height": 0,
    "isPreparingTrailer": false,
    "isSmsSent": false,
    "isTrailerReady": false,
    "key": "388113f5-3927-4fe3-80d5-f2fcf1c7cedd",
    "notes": "",
    "orderId": "",
    "pickUp": "16671 Butano Place, Fontana, CA, USA",
    "price": 0,
    "quantity": 1,
    "trailer": "2er Pack",
    "vehicle": "Sattel",
    "vehicleClass": "Standard",
    "vehicleId": "efgefg",
    "vehicleReadyDate": "2019-09-27 18:32:08",
    "weight": 0
  },
  {
    "additionalPrices": 0,
    "clientOrderNumber": "N / A",
    "companyName": "Test Company",
    "createdAt": "2019-09-06 22:57:55",
    "createdBy": "test@test.com",
    "deliveryDate": "2019-09-07 22:57:03",
    "driver": "Eugeniusz Galinski",
    "dropOff": "12345 Lamplight Village Avenue, Austin, TX, USA",
    "height": 32,
    "isPreparingTrailer": false,
    "isSmsSent": false,
    "isTrailerReady": false,
    "key": "ac3cf14e-b43b-45e4-9168-ad4997b6415d",
    "notes": "Nzube I am adding notes here",
    "pickUp": "16671 Butano Place, Fontana, CA, USA",
    "price": 100,
    "quantity": 3,
    "trailer": "einzeln",
    "vehicle": "Sattel",
    "vehicleClass": "Mega",
    "vehicleId": "123",
    "vehicleReadyDate": "2019-09-26 22:57:36",
    "weight": 12
  },
  {
    "additionalPrices": 0,
    "clientOrderNumber": "N / A",
    "companyName": "Test Company",
    "createdAt": "2019-09-06 22:46:25",
    "createdBy": "test@test.com",
    "deliveryDate": "2019-09-06 22:45:45",
    "driver": "Michal Kucharski",
    "dropOff": "QEW, Niagara Falls, ON, Canada",
    "height": 67,
    "isPreparingTrailer": false,
    "isSmsSent": false,
    "isTrailerReady": false,
    "key": "d0ec3b82-2279-4d11-8e35-a9307713ae5a",
    "notes": "This is coming along",
    "pickUp": "Avenida Callao 1234, Buenos Aires, Argentina",
    "price": 100,
    "quantity": 1,
    "trailer": "2er Pack",
    "vehicle": "Sattel",
    "vehicleClass": "Mega",
    "vehicleId": "123",
    "vehicleReadyDate": "2019-09-25 22:45:57",
    "weight": 12
  },
  {
    "additionalPrices": 0,
    "clientOrderNumber": "N / A",
    "companyName": "Test Company",
    "createdAt": "2019-09-04 18:06:18",
    "createdBy": "test@test.com",
    "deliveryDate": "2019-09-05 18:05:51",
    "driver": "Chibuzo ilogu",
    "dropOff": "Asda Park Royal Superstore, Western Road, London, UK",
    "height": 453,
    "isPreparingTrailer": true,
    "isSmsSent": true,
    "isTrailerReady": true,
    "key": "96ee9410-4d70-4bbc-8016-5d7c9e5ecec1",
    "notes": "ewriupoi ",
    "pickUp": "Avenida Juan Bautista Alberdi 1233, Buenos Aires, Argentina",
    "price": 234,
    "quantity": 1,
    "trailer": "3er Pack",
    "vehicle": "Anhänger",
    "vehicleClass": "50",
    "vehicleId": "543",
    "vehicleReadyDate": "2019-09-21 18:06:03",
    "weight": 453
  },
  {
    "additionalPrices": 0,
    "companyName": "Test Company",
    "completeDate": "2019-09-04 18:02:27",
    "createdAt": "2019-09-04 18:01:30",
    "createdBy": "test@test.com",
    "deliveryDate": "2019-09-04 18:01:09",
    "driver": "Chibuzo ilogu",
    "dropOff": "La Cabaña 123, Las Condes, Chile",
    "height": 123,
    "isPreparingTrailer": false,
    "isSmsSent": true,
    "isTrailerReady": true,
    "key": "bcd50f43-0644-49a7-8bdc-009a4572341b",
    "notes": "qewqe",
    "pickUp": "La Cabaña 123, Las Condes, Chile",
    "price": 123,
    "trailer": "einzeln",
    "vehicle": "Sattel",
    "vehicleClass": "Standard",
    "vehicleId": "123",
    "vehicleReadyDate": "2019-10-02 18:01:19",
    "weight": 123
  }
];

export const handleFilterModifier = (value, compareValue, modifier) => {
    if (modifier === 'lessThan') {
        return value > compareValue;
    }

    if (modifier === 'equals') {
        return value === compareValue;
    }

    if (modifier === 'greaterThan') {
        return value < compareValue;
    }

    return null;
};

const resultList = list.filter(
            item => Object.entries(queryModifiers).every(([filterKey, filterVal]) => {
                const compareValue = item[filterKey];
                const value = Object.values(queryKeys);
                const result = handleFilterModifier(
                    parseFloat(value),
                    compareValue,
                    filterVal
                );
                return result;
            })
        );

当任一queryModifiers的值对中具有“等于”时,此操作将失败。其他任何东西都会返回实际的真实结果。我不明白为什么它在“等于”时失败。

我觉得应该在某个地方有一个forEach,但是我不知道将它放在哪里,并且代码可能有问题。我需要帮助弄清楚它。

1 个答案:

答案 0 :(得分:1)

我认为您应该替换此

const queryKeys = keys: {
   price: '1000',
   weight: '1000'
}

const queryKeys = {
   price: '1000',
   weight: '1000'
}

并替换为

const value = Object.values(queryKeys);

const value = queryKeys[filterKey];
相关问题