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})
)
));
控制台日志(结果)你能详细说明一下吗。您对获取哪些值感兴趣初始对象显示了错误的做法。您永远不需要像这样构造属性。如果你需要一个序列中的值,那么就使用一个平面数组。实际上它们是html标记的属性,就像这样。将这种模式赋予html属性也是一种不好的做法。如果x
中对象的顺序不同,并且input3
在input1
之前,有人编辑了你的问题;0同意,最好检查是否存在,谢谢!!这一个只有在订单被取消时才起作用defined@MandeepSingh,则使用数组。这是具有特定顺序的数据类型。我错过s/t了吗?@NinaScholz,我正在编辑订单问题,但我仍然会给你+1,bcoz它适用于定义的订单,通常情况下,你可以删除多余的索引。