【发布时间】:2023-01-06 23:08:29
【问题描述】:
使用 Javascript 并在我的项目中安装了 lodash。
我的输入如下:
const fields = {
accountBalance: {
id: 1,
field: 'input',
},
totalTrades: {
id: 2,
field: 'input',
},
winRate: {
id: 3,
field: 'slider'
},
reward: {
id: 4,
field: 'input',
},
risk: {
id: 5,
field: 'slider',
}
}
我想要的输出:
const fields = {
accountBalance: {
id: 1,
field: 'input',
nextFieldFocus: 'totalTrades'
},
totalTrades: {
id: 2,
field: 'input',
nextFieldFocus: 'reward'
},
winRate: {
id: 3,
field: 'slider'
},
reward: {
id: 4,
field: 'input',
nextFieldFocus: 'accountBalance'
},
risk: {
id: 5,
field: 'slider',
}
}
每个对象的字段值可以是“输入”或“滑块”。 每次它更新字段值时,我都会调用一个更新字段的函数(上面的预期输出)。 一个字段是输入的每个字段,用该字段是输入的对象列表的下一个键更新 nextFieldFocus。如果在剩余的顺序中找不到它,请从对象列表的开头重新开始,其中该字段是输入。
我尝试了什么:
const fields = {
accountBalance: {
id: 1,
field: 'input',
},
totalTrades: {
id: 2,
field: 'input',
},
winRate: {
id: 3,
field: 'slider'
},
reward: {
id: 4,
field: 'input',
},
risk: {
id: 5,
field: 'slider',
}
}
const keys = Object.keys(fields);
for (let i = 0; i < keys.length; i++) {
const currentKey = keys[i];
if (fields[currentKey].field === 'input') {
let nextKey = keys[i + 1];
while (nextKey && fields[nextKey].field !== 'input') {
nextKey = keys[++i % keys.length];
}
fields[currentKey].nextFieldFocus = nextKey;
}
}
console.log(fields);
我面临的问题是,如果找不到下一个对象,其中字段是输入,则 nextFieldFocus 将不会被填充。理想的是它从头开始检查,但我不知道如何。
【问题讨论】:
标签: javascript object lodash