Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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 如果可能,如何使用.map方法对数组中的项进行排序_Javascript - Fatal编程技术网

Javascript 如果可能,如何使用.map方法对数组中的项进行排序

Javascript 如果可能,如何使用.map方法对数组中的项进行排序,javascript,Javascript,挑战的问题是: 修改函数以返回按升序1、2、3等排序的给定数组的副本。不要修改原始数组 我尝试过执行普通for循环和if语句: let original = [1, 7, 3, 5]; let sortedCopy = [] for (i = 0; i < original.length; i++){ if (original[i] > original[i+1]){ sortedCopy.push.([1]) } } console.log(sor

挑战的问题是:

修改函数以返回按升序1、2、3等排序的给定数组的副本。不要修改原始数组

我尝试过执行普通for循环和if语句:

let original = [1, 7, 3, 5];
let sortedCopy = []
for (i = 0; i < original.length; i++){
    if (original[i] > original[i+1]){
        sortedCopy.push.([1])
    } 
}
console.log(sortedCopy);
我应该得到一个新的有序数组,但我不知道我缺少了什么

编辑:

这是一个更新版本,它现在返回一个数组,但仍然没有对它进行排序

function copyAndSortNumbers(numbers) {
  numArray = numbers;
  numArray.map(sortingArray)
  function sortingArray (numbers){
    if (numbers > numbers + 1){
      return numbers;
    }
  }
  return numArray;
}
可以使用slice复制数组,然后使用sort对新数组进行排序

常量原始=[1,7,3,5]; const sorted=original.slice.sorta,b=>a-b console.logoriginal,已分类批次。首先,

numArray.map(sortingArray)
应引发错误,因为未定义numArray。你有这个,numArray,这不是一回事。如果这不是问题,那么该行什么也不做,因为您没有将结果分配给任何对象。但即使这样也不行,因为我在你的回调中没有定义。。。而且回调不进行任何排序

要创建数组的副本,可以使用let copy=numbers.slice、let copy=array.fromnumbers、let copy=[…numbers],或者使用let copy=numbers.mapx=>x;最后一个是最慢的编辑:显然,Array.from是当前最慢的,而Firefox上的分解速度很慢,实际上它执行map的速度和slice一样快。算了吧。这是一个很好的提醒,即使是老兵也不要在没有测试的情况下假设自己的表现


然后,要对该副本进行排序,copy.sorta,b=>a-b就足够了。

使用扩展语法可能更简单,并返回一个新数组

常量初始值=[1,7,3,5]; 常量排序=[…初始值]。排序,b=>a-b
console.loginitial,sorted要获得排序数组,需要两个嵌套循环,一个用于给定数组,另一个用于查找插入实际元素的位置

变量数组=[1,7,3,5], copy=array.0,1, i、 j; 外部:对于i=1;i<数组长度;i++{ 对于j=0;j控制台。日志副本;1.不是这样的。地图应该用于2。看看:关于.map的工作原理以及回调的参数是什么.map!==。sortHow我可以使用.map对项目进行排序-您不可以。有这么多人似乎在使用地图,我真的很困惑。地图是不应该的。我的意思是作为forEach的替代品。我不确定这种误解是从哪里来的。传播目前相当缓慢:。值得注意的是,性能是否值得关注。因此,第一个循环遍历数组的每个元素,第二个循环遍历循环的每个元素,并检查数组的迭代项是否小于副本数组的迭代项,如果为true,则将该项添加到数组中?对。它拼接复制数组并在位置插入项目,或者如果副本的循环未找到任何小于项目的值,则将项目推到数组的末尾。我相信随着时间的推移,随着它得到更好的优化,这种情况会发生变化。不过,类型检查可能会有很多开销。@JamesCoyle:仔细想想,slice和map都是Array的本机代码,而Array.from必须经过迭代器。映射速度之快让我感到惊讶,但可能是身份函数被优化了。。。
numArray.map(sortingArray)