JavaScript - 映射对象数组未定义

3

我正在从一个包含数组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


1
将其更改为 arrCombined.map(function(e)e.result.replace - adiga
1
但是,那段代码应该会抛出:未捕获的 TypeError: e.replace 不是一个函数 - Ele
4个回答

2

您需要从每个对象中获取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
这是因为你正在尝试从未定义的 arrCombined 访问 result 属性,因此你的代码无法工作。你只需要通过 arrCombined 进行 map ,然后访问数组内每个对象的 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)


0

它应该解决您的问题

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

应该是这样的。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接