Javascript-有条件地访问Object的特定部分



我正试图根据传递的参数有条件地访问对象的特定部分。

对象的结构类似于:

const obj = {
a: [
{ value1: "a11", value2: "a12" },
{ value1: "a21", value2: "a22" },
{ value1: "a31", value2: "a32" }
],
b: [
{ value1: "b11", value2: "b12" },
{ value1: "b21", value2: "b22" },
{ value1: "b31", value2: "b32" }
]
};

在应用程序中,有一个函数需要a或b内的值,这取决于传递给该函数的内容:

功能:

// AorB is a string which is either "a" or "b", but could be anything else if this doesn't work
const myFunction = (AorB) => {
obj.!!!AorB!!!.map(v => {
console.log(v.value1 + v.value2)
})
}

正如你所看到的,我目前替换了决定是用A还是B的部分!!!AorB!!!因为这是我有问题的部分。

如果"a"或"b"作为字符串传递给函数,是否可以映射a或b深度结束的数组元素。

预期行为

当调用这样的函数:myFunction("a")时,我希望控制台记录:

a11a12
a21a22
a31a32

与调用myFunction("b"()时b中指定的值相同

您可以使用数组语法访问对象值。

const obj = {
a: [{
value1: "a11",
value2: "a12"
},
{
value1: "a21",
value2: "a22"
},
{
value1: "a31",
value2: "a32"
}
],
b: [{
value1: "b11",
value2: "b12"
},
{
value1: "b21",
value2: "b22"
},
{
value1: "b31",
value2: "b32"
}
]
};
const myFunction = (obj, AorB) => {
// use the array syntax
return obj[AorB].map(v => {
return v.value1 + v.value2
})
}
console.log('a:', myFunction(obj, 'a'))
console.log('b:', myFunction(obj, 'b'))

最新更新