Javascript 使用find()在数组中通过对象循环
在Javascript 使用find()在数组中通过对象循环,javascript,reactjs,Javascript,Reactjs,在状态.1.extras.miliety中,我有一个包含3个值为1000、2000、3000的对象的数组。我想做一个函数,当用户输入一个介于1和1000之间的数字时,就可以得到对象 { name: '1.000 mileage', mileage: '1.000', description: 'mileage-description', }, 当输入介于1000和2000之间时,您将获得第二个对象, 当
状态.1.extras.miliety
中,我有一个包含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',
},
],
},
},
},
},
};
getObject(speed) {
const mileage= [
{
name: '1000 mileage',
mileage: '1000',
description: 'mileage-description',
},
{
name: '2000 mileage',
mileage: '2000',
description: 'mileage-description 2',
},
{
name: '3000 mileage',
mileage: '3000',
description: 'mileage-description 3',
}
];
return mileage.find(obj => parseInt(obj.mileage, 10) >= speed);
}
您有一个包含三个对象的数组,每个对象都有一个里程值。使用javascript
find
函数,您将获得满足所述条件的第一个值
你的职能:
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',
},
],
},
},
},
},
};
getObject(speed) {
const mileage= [
{
name: '1000 mileage',
mileage: '1000',
description: 'mileage-description',
},
{
name: '2000 mileage',
mileage: '2000',
description: 'mileage-description 2',
},
{
name: '3000 mileage',
mileage: '3000',
description: 'mileage-description 3',
}
];
return mileage.find(obj => parseInt(obj.mileage, 10) >= speed);
}
下面的片段:
var速度=[800100010011995200029583000];
控制台日志(速度);
var GetMiledge=(速度)=>{
常量里程=[
{
名称:“1000英里”,
里程:'1000',
描述:'里程描述',
},
{
名称:“2000英里”,
里程:'2000',
说明:'里程说明2',
},
{
名称:“3000英里”,
里程:'3000',
说明:'里程说明3',
}
];
返回里程数.find(obj=>parseInt(obj.miliety,10)>=速度);
};
log(speed.forEach(s=>console.log,'object:',getmilines))代码>在您的情况下,考虑到当前的预期输入和里程范围,我认为将其转换为索引实际上更容易、更有效。这里有一个性能基准,演示了这与Rodius的答案之间的差异