Javascript 500元素数组
我是后端PHP开发人员,最近我一直在尝试学习基本的JavaScript,因为我计划作为全堆栈开发人员工作,这是(市场上的热门)。我有一个问题,我可以用PHP轻松解决,但在JS中很难解决,因为JS不支持数组的内置函数,比如range()、shuffle等等。这是我的简单问题 Q:编写一个JavaScript函数来生成一个500个整数的随机数组(值为1–500)。从新生成的数组中随机删除并丢弃任意元素。编写代码以有效地确定缺少的元素的值 我已经用PHP解决了这个问题,为了以防万一,我也把它粘贴在这里Javascript 500元素数组,javascript,Javascript,我是后端PHP开发人员,最近我一直在尝试学习基本的JavaScript,因为我计划作为全堆栈开发人员工作,这是(市场上的热门)。我有一个问题,我可以用PHP轻松解决,但在JS中很难解决,因为JS不支持数组的内置函数,比如range()、shuffle等等。这是我的简单问题 Q:编写一个JavaScript函数来生成一个500个整数的随机数组(值为1–500)。从新生成的数组中随机删除并丢弃任意元素。编写代码以有效地确定缺少的元素的值 我已经用PHP解决了这个问题,为了以防万一,我也把它粘贴在这里
// creating array with a range from 1-500
$array_range = range(1, 500);
shuffle($array_range);
$array_shuffle = $array_range;
$remove_elem = rand(1, 500);
unset($array_shuffle[$remove_elem]);
$missing_elem = array_diff($array_range, $array_shuffle);
echo 'Value of missing element is : '.current($missing_elem);
有人能帮我解决这个问题吗?
P.S.提前谢谢,很抱歉问了这么长的问题
对于这个问题,你只需要一步一步地做。 -Random在javascript中有函数
Math.Random
- 你知道所有的语言都有for循环或类似的功能
在javascript中搜索
循环
- 删除数组中的元素。我们有很多方法来实现它
Array.splice、Array.slice或Array.delete
array.splice(index, 1)
请注意,splice将返回删除的元素,它的删除功能是一个副作用,因此不要将其分配给变量
问题4,获取差异
arrA.filter(x => !arrB.includes(x));
把它们放在一起
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var a = Array.from({length: 500}, () => Math.floor(Math.random() * 500));
var rnd = getRandomInt(0, 500);
var tempA = [...a]; //this makes a copy of a, otherwise splice would act on a
tempA.splice(rnd, 1);
function getDiff(arrA, arrB){
return arrA.filter(x => !arrB.includes(x));
}
var result = getDiff(a, tempA)
关于此解决方案的几点注意事项
1) 此处的随机数组生成可能无法保证唯一性。如果你想要独特的,看看问题中使用Fisher-Yates Shuffle的公认答案
2) 这里的主要低效之处是(随机数生成和洗牌后的obv)复制数组。我既不喜欢JS也不使用它,因此您可能想深入了解如何在JS中处理指针逻辑
3) 由于您希望成为一名完整的堆栈工程师,因此计算量大的事情(如生成大量随机数)最好在服务器中完成
希望这有帮助