首先抱歉标题太长,我真的不知道如何更好地表达它。
在解决下划线中的_.shuffle的过程中,遇到了splice的使用。这是我的原始代码:
shuffle = function(array) {
var shuffledArray = [];
var total = array.length;
var copiedArray = array.slice();
while (total){
var randomNum = Math.floor(Math.random() * total);
shuffledArray.push(copiedArray.splice(randomNum,1));
total--;
}
return shuffledArray;
};
var originArray = [1, 2, 3, 4];
console.log(shuffle(originArray));
然而,在测试之后,我意识到它将返回 [] 内的每个值,而不仅仅是值。
IE
[ [ 4 ], [ 3 ], [ 1 ], [ 2 ] ]
//instead of [ 4, 3, 1, 2]
当我更改此行时(在拼接中的 deleteCount 后添加了“[0]”)
shuffledArray.push(copiedArray.splice(randomNum,1));
进入这个
//edited
shuffledArray.push(copiedArray.splice(randomNum,1)[0]);
我得到的返回数组就是我想要的,也就是
[ 3, 1, 2, 4 ] //values are not in [ ]
有人可以解释在 splice() 之后添加 [0] 如何使值不返回 [ ] 或者为什么没有 [0] 吗?