注意一下数组的复制 newArr = arr 这样是不行的 此时newArr还是指向的是arr这个数组 他们是相等的
可以使用 concat slice 来创建新数组
var arr = [1, 2, 3, 4]; var head = []; function fullAZ(arr) { if(arr.length < 2) return; if (arr.length == 2) { console.log(head + '-' + arr[0] + '-' + arr[1]); console.log(head + '-' + arr[1] + '-' + arr[0]); } else if(arr.length > 2){ var i; for (i = 0; i < arr.length; i++) { var lastArr = arr.slice(); //数组复制 否则对lastArr上的操作直接作用到arr head.push(arr[i]); lastArr.splice(i, 1); fullAZ(lastArr); head.pop(); } } } fullAZ(arr);