Javascript 如果可能,如何使用.map方法对数组中的项进行排序
挑战的问题是: 修改函数以返回按升序1、2、3等排序的给定数组的副本。不要修改原始数组 我尝试过执行普通for循环和if语句: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
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
numArray.map(sortingArray)