Javascript JS中作为属性的动态字符串的可选链接

Javascript JS中作为属性的动态字符串的可选链接,javascript,arrays,optional-chaining,Javascript,Arrays,Optional Chaining,我有以下示例代码: var x = [ {input1: "aaa"}, {input2: "bbb"}, {input444: "ddd"}, {input55: "eee"} {input3: "ccc"}, ] 我试图得到道具的值,如果道具存在于物体中,比如 x.forEach((item, index) => { console.log(item.[`input${index}`

我有以下示例代码:

var x = [
{input1: "aaa"},
{input2: "bbb"},
{input444: "ddd"},
{input55: "eee"}
{input3: "ccc"},
]
我试图得到道具的值,如果道具存在于物体中,比如

x.forEach((item, index) => {
 console.log(item.[`input${index}`]);
})
所以对于上面的示例代码:我希望输出为[“aaa”、“bbb”、“ccc”]

我知道属性的第一部分(在本例中为“输入”),第二部分仅为索引


是否可以使用可选链接来了解值?我缺少什么?

您只需在索引中添加一个,并为没有点的对象使用括号表示法

仅适用于具有未定义的源值。它不会切换某些程序逻辑以显示值或不显示值。在这种情况下,您可以检查对象中是否存在该属性,然后显示所需的部分,而无需一些可选的链接

var x=[{input1:aaa},{input2:bbb},{input3:ccc},{input444:ddd},{input55:eee}];
x、 forEach((项目、索引)=>{
if(`input${index+1}`在项目中)
log(项[`input${index+1}`];

});除非您只查找特定属性,否则可选链接没有什么意义。使用或

var x=[
{input1:“aaa”},
{input2:“bbb”},
{input3:“ccc”},
{input4:“ddd”},
{input5:“eee”}
]
x、 forEach((项目、索引)=>{
console.log(Object.values(item));
console.log(Object.values(item)[0]);//如果它只是一个,请引用它

})
由于无法保证输入顺序,我会这样做:

var x=[{input1:“aaa”},{input2:“bbb”},{input444:“ddd”},{input55:“eee”},{input3:“ccc”},];
让result=Object.assign([]),…x.flatMap(o=>
Object.entries(o.filter)([k])=>
k、 startsWith('input')&&+k.slice(5)>=1&&+k.slice(5)
({[k.slice(5)-1]:v})
)
));

控制台日志(结果)x
中对象的顺序不同,并且
input3
input1
之前,有人编辑了你的问题;0同意,最好检查是否存在,谢谢!!这一个只有在订单被取消时才起作用defined@MandeepSingh,则使用数组。这是具有特定顺序的数据类型。我错过s/t了吗?@NinaScholz,我正在编辑订单问题,但我仍然会给你+1,bcoz它适用于定义的订单,通常情况下,你可以删除多余的
索引。