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

在javascript中映射对象数组时出错,javascript,object,dictionary,ecmascript-6,arrow-functions,Javascript,Object,Dictionary,Ecmascript 6,Arrow Functions,我有一个目标 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 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);
我遇到意外[未定义,未定义,未定义] 感谢您的帮助

更换

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

最终结果应该是:

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

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

最终结果应该是:

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

来解释为什么你没有定义

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

const perdidaslocales = (accesorio) => {
    accesorio.name; 
    accesorio.k * accesorio.qtty;
}
看看怎么会没有回报?因此,返回值是未定义的

看起来,您试图做的是返回一个对象,在一个简单的(一行,“隐含”返回)箭头函数中,如果您想要返回一个对象或数组,您需要将返回值包装在
()

第二个问题是

{accesorio.name, accesorio.k * accesorio.qtty}
不是有效的对象。对象是键/值对,如

{key1: value1, key2: value2}
因此,在您的情况下,您可以返回名称和值,如

{name: accesorio.name, value: accesorio.k * accesorio.qtty}
把这些放在一起,你会得到

const管道={
直径:200,
C:120,
长度:40,
附件:[
{名称:“弯曲90°,k:0.9,QTY:2},
{名称:“闸阀”,k:0.3,QTY:1},
{名称:“蝶阀”,k:0.2,QTY:1}
]
}
const perdidasalocales=(accesorio)=>({name:accesorio.name,value:accesorio.k*accesorio.qtty});
const accesorieslosses=pipe.accesories.map(perdidaslocales);

控制台日志(ACCESORESLOSS)以解释为何未定义

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

const perdidaslocales = (accesorio) => {
    accesorio.name; 
    accesorio.k * accesorio.qtty;
}
看看怎么会没有回报?因此,返回值是未定义的

看起来,您试图做的是返回一个对象,在一个简单的(一行,“隐含”返回)箭头函数中,如果您想要返回一个对象或数组,您需要将返回值包装在
()

第二个问题是

{accesorio.name, accesorio.k * accesorio.qtty}
不是有效的对象。对象是键/值对,如

{key1: value1, key2: value2}
因此,在您的情况下,您可以返回名称和值,如

{name: accesorio.name, value: accesorio.k * accesorio.qtty}
把这些放在一起,你会得到

const管道={
直径:200,
C:120,
长度:40,
附件:[
{名称:“弯曲90°,k:0.9,QTY:2},
{名称:“闸阀”,k:0.3,QTY:1},
{名称:“蝶阀”,k:0.2,QTY:1}
]
}
const perdidasalocales=(accesorio)=>({name:accesorio.name,value:accesorio.k*accesorio.qtty});
const accesorieslosses=pipe.accesories.map(perdidaslocales);

控制台日志(ACCESORESLOSS)
{accesorio.name,accesorio.k*accesorio.qtty}
毫无意义。。。替换为
accesorio.k*accesorio.qtty
我需要在新的对象数组中,名称的值如果
perdidaslocales
需要返回一个对象,请将返回值包装在
()
中。。。。并使其成为有效对象,即<代码>({name:accesorio.name,value:accesorio.k*accesorio.qtty})
但是由于您已经在使用一些ES2015+概念,
const perdidaslocales=({name,k,qtty})=>({name,value:k*qtty})
将尝试第二个选项,因为对于第一个选项,我得到了意外的标记,预期的错误
{accesorio.name,accesorio.k*accesorio.qtty}
毫无意义。。。替换为
accesorio.k*accesorio.qtty
我需要在新的对象数组中,名称的值如果
perdidaslocales
需要返回一个对象,请将返回值包装在
()
中。。。。并使其成为有效对象,即<代码>({name:accesorio.name,value:accesorio.k*accesorio.qtty})但是由于您已经在使用一些ES2015+概念,
const perdidaslocales=({name,k,qtty})=>({name,value:k*qtty})
将尝试第二个选项,因为使用第一个选项,我会得到意外的标记,即预期的errorPerfect。它与这个const perdidasalocales=(accesorio)=>{return{name:accesorio.name,value:accesorio.k*accesorio.qtty}}}谢谢@ante jablan adamovi%c4%87。它起作用了。谢谢@jaromanda-x也将尝试您的解决方案。完美。它与这个const perdidasalocales=(accesorio)=>{return{name:accesorio.name,value:accesorio.k*accesorio.qtty}}}谢谢@ante jablan adamovi%c4%87。它起作用了。谢谢@jaromanda-x也会尝试您的解决方案。@AlejandroA.E.Díaz我发现解释错误通常比提供解决方案更好:p@AlejandroA.E.Díaz我发现解释错误通常比提供解决方案要好:p