我有一个对象
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);
我进入了accesorieslosses [undefined,undefined,undefined] 谢谢你的帮助
答案 0 :(得分:1)
替换
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}
]
答案 1 :(得分:1)
解释你未定义的原因
const perdidaslocales = (accesorio) => {accesorio.name, accesorio.k * accesorio.qtty}
相当于
const perdidaslocales = (accesorio) => {
accesorio.name;
accesorio.k * accesorio.qtty;
}
看看怎么没有回报?因此返回值为undefined
...
看起来,你要做的是返回一个对象,在一个简单的(一行,“暗示”返回)箭头函数中,如果你想返回,你需要将返回值包装在()
中对象或数组
第二个问题是,
{accesorio.name, accesorio.k * accesorio.qtty}
不是有效对象。对象是键/值对,如
{key1: value1, key2: value2}
因此,在您的情况下,您可以返回名称和值,例如
{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);