Javascript - отображение массива объектов undefined - PullRequest
3 голосов
/ 27 мая 2020

Я передаю объект из функции, содержащей массив arrCombined. У меня есть объект под названием results, который я хотел бы сопоставить и удалить строки, чтобы я мог преобразовать эти строки в целое число. При сопоставлении моего массива объектов для results я застрял на том, чтобы получить значение undefined.

Вот мой массив:

[..]
    0: Object { result: "494,927", risk: "LOW", sector: "Online" }
    ​
    1: Object { result: "48,883", risk: "MEDIUM-LOW", sector: "Retail Stores" }
    ​
    2: Object { result: "59,976", risk: "MEDIUM-LOW", sector: "Store Pick up" }
    ​
    3: Object { result: "1,205,915", risk: "MEDIUM", sector: "Drive in" }
    ​
    4: Object { result: "1,434,262", risk: "LOW", sector: "In store" }

Я объявляю переменную finalResult для возврата целевого " result "в моей функции отображения, которая выглядит так.

​ let finalResult = arrCombined.arrCombined.result.map(function (e) {
        return Number(e.replace(/(,\s*)+/g, '').trim());
    });

console.log(finalResult) // undefined.

Я ожидаю, что finalResult вернет объекты результата в виде чисел, т.е. 494927, 48883, 59976, 1205915, 1434262

Ответы [ 4 ]

2 голосов
/ 27 мая 2020

С каждого объекта нужно взять result свойство.

var arrCombined = [
        { result: "494,927", risk: "LOW", sector: "Online" },
        { result: "48,883", risk: "MEDIUM-LOW", sector: "Retail Stores" },
        { result: "59,976", risk: "MEDIUM-LOW", sector: "Store Pick up" },
        { result: "1,205,915", risk: "MEDIUM", sector: "Drive in" },
        { result: "1,434,262", risk: "LOW", sector: "In store" }
    ],
    finalResult = arrCombined.map(({ result }) => Number(result.replace(/(,\s*)+/g, '').trim()));

console.log(finalResult);
0 голосов
/ 27 мая 2020

Это должно решить вашу проблему

var arrCombined = [
{ result: "494,927", risk: "LOW", sector: "Online" },
{ result: "48,883", risk: "MEDIUM-LOW", sector: "Retail Stores" },
{ result: "59,976", risk: "MEDIUM-LOW", sector: "Store Pick up" },
{ result: "1,205,915", risk: "MEDIUM", sector: "Drive in" },
{ result: "1,434,262", risk: "LOW", sector: "In store" }
]

var finalResult = arrCombined.map(item => {
  return Number(item.result.replace(/(,\s*)+/g, '').trim())
});

console.log(finalResult)
0 голосов
/ 27 мая 2020

Должно быть так.

let finalResult = arrCombined.arrCombined.map(function (e) {
        return Number(e.result.replace(/(,\s*)+/g, '').trim());
    });
0 голосов
/ 27 мая 2020

Это происходит из-за того, что вы пытаетесь получить доступ к свойству result из arrCombined, которое не определено, и, следовательно, ваш код не работает. Вам просто нужно от map до arrCombined, а затем получить доступ к свойству result каждого объекта внутри массива, например:

const arrCombined = [
  { result: "494,927", risk: "LOW", sector: "Online" },
  { result: "48,883", risk: "MEDIUM-LOW", sector: "Retail Stores" },
  { result: "59,976", risk: "MEDIUM-LOW", sector: "Store Pick up" },
  { result: "1,205,915", risk: "MEDIUM", sector: "Drive in" },
  { result: "1,434,262", risk: "LOW", sector: "In store" }
]

let finalResult = arrCombined.map(function (e) {
    return Number(e.result.replace(/(,\s*)+/g, '').trim());
});

console.log(finalResult)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...