Javascript 500元素数组

Javascript 500元素数组,javascript,Javascript,我是后端PHP开发人员,最近我一直在尝试学习基本的JavaScript,因为我计划作为全堆栈开发人员工作,这是(市场上的热门)。我有一个问题,我可以用PHP轻松解决,但在JS中很难解决,因为JS不支持数组的内置函数,比如range()、shuffle等等。这是我的简单问题 Q:编写一个JavaScript函数来生成一个500个整数的随机数组(值为1–500)。从新生成的数组中随机删除并丢弃任意元素。编写代码以有效地确定缺少的元素的值 我已经用PHP解决了这个问题,为了以防万一,我也把它粘贴在这里

我是后端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


让我们将其划分为子问题

问题#1,生成一个随机整数数组-->

问题2,生成一个范围内的随机数--->

问题3,删除该索引处的元素

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) 由于您希望成为一名完整的堆栈工程师,因此计算量大的事情(如生成大量随机数)最好在服务器中完成

希望这有帮助