【发布时间】:2018-04-19 13:27:09
【问题描述】:
在state.1.extras.mileage 中,我有一个包含 3 个对象的数组,其值分别为:1000、2000、3000。我想创建一个函数,当用户输入 1 到 1000 之间的数字时,您会得到对象
{
name: '1.000 mileage',
mileage: '1.000',
description: 'mileage-description',
},
当输入介于 1000 和 2000 之间时,您将获得第二个对象, 当您输入在 2000 和 3000 之间时,您将获得第三个对象。
这是我目前的功能:
export const getMileageName = (
state: GlobalState,
pdbId: ?string = null,
index?: number = 0,
): string => {
const mileages = getMileages(state, pdbId);
if (!mileages || !mileages[index]) {
throw Error('Couldn\'t find mileage');
}
return mileages[index].name;
};
export const getMileageByKilometers = (
state: GlobalState,
pdbId: ?string = null,
kilometers: number,
) => {
const mileages = getMileages(state, pdbId);
console.log(mileages);
return mileages.find([0]);
};
const state = {
pdb: {
items: {
1: {
extras: {
duration: [
{
name: 'duration-name',
description: 'duration',
duration: '40',
},
],
extra: [
{ name: 'extra' },
],
contract: [
{ name: 'contract' },
],
claimfree: [
{ name: 'claimfree' },
],
mileage: [
{
name: '1.000 mileage',
mileage: '1.000',
description: 'mileage-description',
},
{
name: '2.000 mileage',
mileage: '2.000',
description: 'mileage-description 2',
},
{
name: '3.000 mileage',
mileage: '3.000',
description: 'mileage-description 3',
},
],
},
},
},
},
};
【问题讨论】:
-
在您的情况下,考虑到当前的预期输入和里程范围,我认为将其转换为索引实际上会更容易和更有效。这是一个性能基准,展示了这与 Rodius 的答案 measurethat.net/Benchmarks/ShowResult/11099 之间的区别
标签: javascript reactjs