gpt4 book ai didi

javascript - 获取正确的数字

转载 作者:行者123 更新时间:2023-12-02 20:50:47 25 4
gpt4 key购买 nike

抱歉,标题不好,但我什至无法正确命名问题,因此无法搜索解决方案,我只能描述我想要实现的目标。

我有一份发动机类型及其燃料的列表。

export const engineTypes = {
0: 'HYBRID',
1: 'GASOLINE',
2: 'GAS',
4: 'DIESEL',
8: 'ELECTRIC',
}


export const fuelTypes = {
DIESEL: 'Diesel',
GASOLINE: 'Gasoline',
GAS: 'Gas',
HYBRID: 'Hybrid',
ELECTRIC: 'Electric',
}

export const getFuelTypeByEngineType = (type) => {
const engine = engineTypes[type]
if (engine) {
return fuelTypes[engine]
}

}

这个想法是传递一个像 getFuelTypeByEngineType(2) 这样的值但是,如果我执行类似 getFuelTypeByEngineType(9) 的操作,则返回“GAS”我应该拿回['汽油','电力']。

含义 9 是 -> 8(电动)+ 1(汽油)

如何实现这一目标?请帮忙!

最佳答案

如果您借用 decomposing an arbitrary number into bits 链接问题中的答案之一,那么您需要做的就是使用 Array.prototype.map 返回一个引擎类型数组,其键存在于返回的位数组中。

一些收获:

  • 您应该使用 0 键,因为在最后的分解步骤中,您总是会得到余数 0。如果您坚持这样做,那么您将需要保护子句在您的方法中,如果值为 0
  • ,则返回 ["HYBRID"]
  • 如果engineTypes中不存在该键,您将得到undefined。通过过滤映射数组可以轻松规避这一问题。

请参阅下面的概念验证:

const engineTypes = {
0: 'HYBRID',
1: 'GASOLINE',
2: 'GAS',
4: 'DIESEL',
8: 'ELECTRIC',
}

const fuelTypes = {
DIESEL: 'Diesel',
GASOLINE: 'Gasoline',
GAS: 'Gas',
HYBRID: 'Hybrid',
ELECTRIC: 'Electric',
}

const getFuelTypeByEngineType = (type) => {
if (type === 0) {
return [engineTypes[type]];
}

return getBits(type)
.map(t => {
return engineTypes[t];
})
.filter(v => !!v);
}

const getBits = (value) => {
let b = 1;
const res = [];
while (b <= value){
if (b & value) res.push(b);
b <<= 1;
}
return res;
}

console.log(getFuelTypeByEngineType(0)); // ["HYBRID"]
console.log(getFuelTypeByEngineType(9)); // ["GASOLINE", "ELECTRIC"]
console.log(getFuelTypeByEngineType(64)); // []

关于javascript - 获取正确的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61612514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com