如何找到一个数字,该数字是在数组(Javascript)中添加哪些元素的结果?

时间:2019-04-26 05:08:44

标签: javascript html

例如,有一个数组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编码的几个元素?

感谢您的帮助。

1 个答案:

答案 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))