Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用ES6编写阵列混频器_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript 如何使用ES6编写阵列混频器

Javascript 如何使用ES6编写阵列混频器,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,目前正在学习ES 6和ES 7,我编写了一个混合数组的函数,我想通过将该函数“翻译”到ES 6来进行训练,它似乎不起作用,我也没有发现我的错误,有人能帮我吗 const arr = [1, 2, 3, 4, 5] var mixer = array => { for (let i = 0; i < array.length; i++) { let randomized = Math.round(Math.random() * array.length)

目前正在学习ES 6和ES 7,我编写了一个混合数组的函数,我想通过将该函数“翻译”到ES 6来进行训练,它似乎不起作用,我也没有发现我的错误,有人能帮我吗

const arr = [1, 2, 3, 4, 5]

var mixer = array => {
    for (let i = 0; i < array.length; i++) {
        let randomized = Math.round(Math.random() * array.length)
        [array[randomized], array[i]] = [array[i], array[randomized]]
    }
    return array
}

mixer(arr)
const arr=[1,2,3,4,5]
var mixer=array=>{
for(设i=0;i
这是我从谷歌浏览器收到的错误

未捕获引用错误:未定义随机化 在混合器处(程序js:6) 在prog.js:11

谢谢您的帮助:)

问题A:
未定义随机化
你忘了
,在行尾

问题B:
未定义的值
在数组末尾开始迭代

const arr=[1,2,3,4,5]
var mixer=array=>{
for(设i=array.length;i;i--){
让随机化=Math.floor(Math.random()*i);
[array[i-1],array[randomized]=[array[randomized],array[i-1]];
}
返回数组;//此处
}
console.log(mixer(arr))
TL;DR:无论何时以
[
开头,如果可能,请确保以分号结束上一条指令

我只想补充一下Weedoze的答案。
实际上,您只需要他建议的第一个分号。
这可能会令人困惑,因为分号在99%的情况下是可选的。
问自己如果把代码放在一行中会是什么样子会有很大帮助。特别是当你以
[
开头时。正如Bergi在评论中建议的那样,还要注意以
/
+
-
`
开头的行

例如,以以下代码为例:

test = 123
a = test
(b = 456)
它会抛出一个错误,比如说
测试不是一个函数

a = test
(b = 456)
等于

a = test(b = 456)
如果你愿意的话

test = 123
a = test;
(b = 456)
那么,即使您将第2行和第3行放在同一行,您的代码也会很清楚,并且仍然具有相同的含义:

a = test;(b = 456)

请定义一个“混音器”到底做什么?这是一个洗牌吗?非常感谢Weedoze,我只是意识到这个函数并没有像我预期的那样工作,有时它告诉我像这样未定义[1,4,2,未定义,未定义,3,5]你能帮我吗?编辑:是的,这是正确的deceze这是一个洗牌,也许已经有一种方法来混合数组,但我想为它做一个函数practicing@A.S检查更新的答案你今天就在上面!只需输入一个简单的错误即可关闭?@evolutionxbox可能它不是一种类型。OP可能认为在es6函数中不需要
onJust a head up:这仍然可以将
未定义的
添加到您的数组中。@user3297291第一个问题是通过添加
解决的。未定义的问题是另一个问题我知道这是另一个问题,我认为您的答案非常贴切;我只是想警告人们做“复制粘贴堆栈溢出”的事情期望得到一个工作的洗牌函数;)+1谢谢我知道我知道分号,但从我学习javascript的人那里,他从来没有使用过分号,所以我得到了不使用分号的反射,现在我再次看到它是多么重要
[
?或
/
+
-
`
!@Bergi是真的。不过,我从来没有发现自己处于这样一种情况:我发现自己开始与其中一种人打交道。你能想到会发生这种情况吗?@Forivin.allow.,
/.exec(…)。forEach(…)
也不令人难以置信。