如何用ECMA 5.1语法实现特定数字的随机排序?
用ECMA 5.1实现随机生成1-5中4个不重复数字的数组
你提供的ES6代码里用到了几个ES6独有的特性(const、let、Array.prototype.includes()),这些在ECMA 5.1中不被支持,只需要替换掉这些特性就能实现相同功能。
需要替换的ES6特性:
- 将
const和let替换为var(ECMA 5.1仅支持var声明变量) - 用
Array.prototype.indexOf() !== -1替代Array.prototype.includes()(ECMA 5.1没有includes方法)
转换后的ECMA 5.1代码:
// function to pick length number between min and max function generateRandomArr(length, max, min) { var resultsArr = []; for (var i = 0; i < length; i++) { var newNumber = Math.floor(Math.random() * (max - min)) + min; resultsArr.indexOf(newNumber) !== -1 ? length += 1 : resultsArr.push(newNumber); } return resultsArr; } // picks 4 digits between 1 and 5 and stores them in an array vars.listsarray = generateRandomArr(4, 5, 1); console.log("List of 4 digits picked: " + vars.listsarray); console.log("Set task order for subject_nr " + vars.subject_nr);
这段代码的逻辑和你原有的ES6代码完全一致:循环生成指定范围内的随机数,若数字已存在则增加循环次数重新生成,直到得到length个不重复的随机数,最终返回结果数组。
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

