例如,有一个数组arr[1,2,4,8,16,32,64,128]
,每个元素代表一个权限。这是用于权限分配的数字。
一个数字绝对是一个元素或数组中多个元素的总和。
例如:
1 = arr[0]
6 = arr[1]+arr[2]
11 = arr[0]+arr[1]+arr[3]
17 = 1 + 16
171 = 1 +2 +8 +32 +128
如何找到此元素或使用js编码的几个元素?
感谢您的帮助。
答案 0 :(得分:1)
即使您可能并不十分在意这里发生的事情,因为它闻起来很像某种作业,但是当问问者提供的信息不足以帮助回答问题时,这正是回答者的感受。
>
const arr = [1, 2, 4, 8, 16, 32, 64, 128]
const getElementIndexes = (n) => {
return arr.slice().reverse().reduce((accumulator, currentValue) => {
if (n >= currentValue) {
accumulator.unshift(arr.indexOf(currentValue))
n = n - currentValue
}
return accumulator
}, [])
}
console.log(getElementIndexes(1))
console.log(getElementIndexes(6))
console.log(getElementIndexes(11))
console.log(getElementIndexes(17))
console.log(getElementIndexes(171))