在 javascript reactjs 中映射对象数组时出错

Error mapping an array of objects in javascript reactjs

我有对象

const pipe = {
diameter: 200,
C: 120,
length: 40,
accesories: [
    {name: "Bend 90°", k: 0.9, qtty: 2},
    {name: "Gate Valve", k: 0.3, qtty: 1},
    {name: "Butterfly valve", k: 0.2, qtty: 1}
  ]
}

我需要遍历所有配件并用k计算一个值,例如值= k * qtty。

当我执行以下操作时,它不起作用

const perdidaslocales = (accesorio) => {accesorio.name, accesorio.k * accesorio.qtty}
const accesorieslosses = pipe.accesories.map(perdidaslocales);

我得到了配件损失 [undefined, undefined, undefined] 感谢您的帮助

替换

const perdidaslocales = (accesorio) => {accesorio.name, accesorio.k * accesorio.qtty}

const perdidaslocales = (accesorio) => {
   return { 
       name: accesorio.name,
       value: accesorio.k * accesorio.qtty
   }
}

最终结果应该是这样的:

[
  {name: "Bend 90°", value: 1.8},
  {name: "Gate Valve", value: 0.3},
  {name: "Butterfly valve", value: 0.2}
]

解释为什么你得到 undefined

const perdidaslocales = (accesorio) => {accesorio.name, accesorio.k * accesorio.qtty}

相当于

const perdidaslocales = (accesorio) => {
    accesorio.name; 
    accesorio.k * accesorio.qtty;
}

看看怎么没有return?因此 return 值为 undefined ...

看起来,你想要做的是 return 一个对象,在一个简单的(一行,"implied" return)箭头函数中你需要包装 return value in () 如果你想 return 对象或数组

第二个问题是,

{accesorio.name, accesorio.k * accesorio.qtty}

不是有效对象。对象是 key/value 对,如

{key1: value1, key2: value2}

因此,在您的情况下,您可以 return 名称和值,例如

{name: accesorio.name, value: accesorio.k * accesorio.qtty}

把这些放在一起,你得到

const pipe = {
    diameter: 200,
    C: 120,
    length: 40,
    accesories: [
        {name: "Bend 90°", k: 0.9, qtty: 2},
        {name: "Gate Valve", k: 0.3, qtty: 1},
        {name: "Butterfly valve", k: 0.2, qtty: 1}
    ]
}
const perdidaslocales = (accesorio) => ({name: accesorio.name, value: accesorio.k * accesorio.qtty});
const accesorieslosses = pipe.accesories.map(perdidaslocales);

console.log(accesorieslosses);

这可以使用对象解构来简化See this MDN documentation

const pipe = {
    diameter: 200,
    C: 120,
    length: 40,
    accesories: [
        {name: "Bend 90°", k: 0.9, qtty: 2},
        {name: "Gate Valve", k: 0.3, qtty: 1},
        {name: "Butterfly valve", k: 0.2, qtty: 1}
    ]
}
const perdidaslocales = ({name, k, qtty}) => ({name: name, value: k * qtty});
// object destructuring  ^^^^^^^^^^^^^^^
const accesorieslosses = pipe.accesories.map(perdidaslocales);

console.log(accesorieslosses);

可以进一步简化,使用 Shorthand Object property names (search for shorthand in this link)

const pipe = {
    diameter: 200,
    C: 120,
    length: 40,
    accesories: [
        {name: "Bend 90°", k: 0.9, qtty: 2},
        {name: "Gate Valve", k: 0.3, qtty: 1},
        {name: "Butterfly valve", k: 0.2, qtty: 1}
    ]
}
const perdidaslocales = ({name, k, qtty}) => ({name, value: k * qtty});
// Object shorthand property names             ^^^^^
const accesorieslosses = pipe.accesories.map(perdidaslocales);

console.log(accesorieslosses);