不不不,你这写得还是有问题,当num等于262144的时候,我肯定是只需要newObj里的key值为262144的值的。num的值可能是newObj里的多个key值加起来得到的,也可能是其中某一个key值,请基于这两个条件进行更改
时间: 2024-04-12 20:27:20 浏览: 76
非常抱歉之前的回答还是有问题。根据您的要求,我来修正一下代码:
```javascript
let newObj = {
1: "qwe",
4: "ewq",
16: "sda",
64: "fsd",
256: "werxn",
1024: "ytu",
4096: "khjk",
16384: "tre",
65536: "hfg",
262144: "fdas"
};
let num = 262144;
let values = [];
if (newObj[num]) {
values.push(newObj[num]);
} else {
let keys = Object.keys(newObj).map(Number).sort((a, b) => b - a);
for (let i = 0; i < keys.length; i++) {
if (keys[i] <= num) {
values.push(newObj[keys[i]]);
num -= keys[i];
}
if (num === 0) {
break;
}
}
}
console.log(values);
```
现在,当 `num` 的值为 `262144` 时,将会输出 `["fdas"]`,这是对应于键值为 `262144` 的对象键值对中的值。当 `num` 的值为其他可由 `newObj` 中多个键值相加得到的数时,将会输出所有相加得到 `num` 的键对应的值。
阅读全文