JavaScript中的双尖括号有什么作用?

时间:2019-03-10 13:18:37

标签: javascript

我在下面附加了一个功能。我对这行特别困惑:

  , 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()
}

1 个答案:

答案 0 :(得分:2)

外部[]创建一个数组。在此数组内部,内部[]创建一个新数组。因此,结果是数组中的一个数组。外部数组的第一个(也是唯一)元素是内部数组。内部数组的第一个(也是唯一一个)元素是shift()调用的结果。格式正确,应该更清晰:

[
    [
        letters.shift()
    ]
]

因此,括号在JavaScript中不是特殊的构造。