我在下面附加了一个功能。我对这行特别困惑:
, results = [[letters.shift()]]
在这种情况下,双括号有什么作用?
function stringPermutations(str) {
let letters = str.split('')
, results = [[letters.shift()]]
while (letters.length) {
const currLetter = letters.shift()
let tmpResults = []
results.forEach(result => {
let rIdx = 0
while (rIdx <= result.length) {
const tmp = [...result]
tmp.splice(rIdx, 0, currLetter)
tmpResults.push(tmp)
rIdx++
}
})
results = tmpResults
}
return results
.map(letterArray => letterArray.join(''))
.filter((el, idx, self) => (self.indexOf(el) === idx))
.sort()
}
答案 0 :(得分:2)
外部[]创建一个数组。在此数组内部,内部[]创建一个新数组。因此,结果是数组中的一个数组。外部数组的第一个(也是唯一)元素是内部数组。内部数组的第一个(也是唯一一个)元素是shift()
调用的结果。格式正确,应该更清晰:
[
[
letters.shift()
]
]
因此,括号在JavaScript中不是特殊的构造。