在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