Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 检查JS中的数组-列表是否已排序?_Javascript_Arrays_Sorting - Fatal编程技术网

Javascript 检查JS中的数组-列表是否已排序?

Javascript 检查JS中的数组-列表是否已排序?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我需要创建一个程序来检查数组中的列表是否已排序。我有三个输入数据: 1,2,3,4,5 1,2,8,9,9 1,2,2,3,2 这是我的代码: let sorts = +gets(); // 3 let list = []; for (let i = 0; i < sorts; i++) { list[i] = gets().split(',').map(Number); // The Array will be: [ [ 1, 2, 3, 4, 5 ], [ 1, 2, 8,

我需要创建一个程序来检查数组中的列表是否已排序。我有三个输入数据:

1,2,3,4,5

1,2,8,9,9

1,2,2,3,2

这是我的代码:

let sorts = +gets(); // 3
let list = [];

for (let i = 0; i < sorts; i++) {
    list[i] = gets().split(',').map(Number); // The Array will be: [ [ 1, 2, 3, 4, 5 ], [ 1, 2, 8, 9, 9 ], [ 1, 2, 2, 3, 2 ] ]
}

for (let i = 0; i < list[i][i].length; i++){
    if (list[i][i] < list[i][i +1]) {
        print('true');
    } else {
        print('false');
    }
}
let sorts=+get();//3.
让列表=[];
for(设i=0;i
我需要打印新行上的所有列表true或false。对于本例,我的输出需要是:

真的

真的

假的

我不知道如何解决这个问题。

var str=[“1,2,3,4,5”,“1,2,8,9,9”,“1,2,2,3,2”];
for(str中的var i){
var list=str[i].split(',).map(编号);
控制台日志(列表);
var isSorted=真;
对于(var j=0;j列表[j+1]){
isSorted=假;
打破
}
}
控制台日志(isSorted);

}
像这样的东西怎么样:

!![1,2,3,4,5].reduce((n, item) => n !== false && item >= n && item)
// true

!![1,2,8,9,9].reduce((n, item) => n !== false && item >= n && item)
// true 

!![1,2,2,3,2].reduce((n, item) => n !== false && item >= n && item)
// false
Reduce实际上是将数组缩减为一个值——在我们的例子中是一个布尔值

这里,我们每次迭代调用一个函数,
(n,item)
是我们的函数签名,它的主体是
n!==false&&item>-n&&item
-我们正在确保
n
存在(n是我们的累加器-读取!),测试
item
是否大于
n
,并确保
item
存在


数组中的每个元素都会发生这种情况。然后我们使用
强制将结果转换为tru boolean。

也许您可以使用此帮助方法检查是否正确排序:

var arr1=[1,2,3,4,4];
var arr2=[3,2,1];
控制台日志(检查表(arr1));
控制台日志(检查表(arr2));
功能检查表(arr){
对于(变量i=0;iarr[i+1]){
返回false;
}
}
}
返回true;
}
通过使用
slice
方法简单地尝试这种方法:它将检查前一个元素是否小于下一个元素。如果每个元素的条件都为true,那么它将返回true,否则返回false


arr.slice(1)。every((item,i)=>arr[i]arr[i]如果我明白你的意思,你想知道数组是否已排序。这是此类解决方案的一个示例,请尝试。我在下面粘贴了一些代码

var myArray=[1,4,3,6];

if(isSorted(myArray)){

    console.log("List is sorted");
}else{
    console.log("List is not sorted");
}

function isSorted(X){

var sorted=false;

for(var i=0;i<X.length;i++){

        var next=i+1;

    if (next<=X.length-1){

        if(X[i]>X[next]){
            sorted=false;
            break;
        }else{
            sorted=true;

        }
    }

}


return sorted;

}
var myArray=[1,4,3,6];
如果(isSorted(myArray)){
console.log(“列表已排序”);
}否则{
console.log(“列表未排序”);
}
函数被排序(X){
var=false;

对于(var i=0;i有很多方法可以做到这一点。这是我的

const isArraySorted=array=>
排列
.slice(0)//克隆数组
.sort((a,b)=>a-b)//对其进行排序
.every((el,i)=>el==数组[i])//与初始值比较)
您可以使用检查每个值是否大于上一个值

const isSorted=arr=>arr.every((v,i,a)=>!i|a[i-1]您可以检查原始数组的字符串化排序副本是否与原始数组具有相同的值。可能不是最酷或性能最好的副本,但我喜欢它的简单和清晰

const arraysToCheck=[
[1, 2, 3, 4, 5],
[1, 2, 8, 9, 9],
[1, 2, 2, 3, 2]
]
const isSorted=arraysToCheck.map(
item=>JSON.stringify([…item].sort((a,b)=>a-b))==JSON.stringify(item)
);
console.log(isSorted);
已排序的数字列表 包括负数、零和相邻的重复项 如果所有数字都符合顺序,则使用将返回true的方法,否则将返回false。条件如下:

(num <= arr[idx + 1]) || (idx === arr.length - 1)

演示
var arr0=[1,2,3,4,5];
var arr1=[1,2,8,9,9];
var arr2=[1,2,2,3,2];
var arr3=[0,0,0,1,3];
var arr4=[-3,0,1,3,3];
var arr5=[-4,-2,0,0,-4];
函数排序(数组){
返回数组.every(函数(num、idx、arr){


return(num)这是一个聪明的方法,尽管值得给用户一个解释,但没有经验的程序员永远不会理解这里发生了什么。为了测试起见,这里有一个提琴:的确。
[0,1,2,3,4,5]
将返回
false
@VisioN这确实是一个很好的观点。@KunalMukherjee正确。这将是一个操作练习,虽然呃…:)这会短路吗?这真的很容易,但是你知道如何创建像你的(str)一样的数组吗:编辑:我知道,只需要get()而不需要。拆分()这非常整洁,请向上投票:)缩短:
arr.every((v,i,a)=>!i|a[i-1]@VisioN更新了解决方案。感谢您的输入。对
使用像
!i
这样的技巧真的很好吗i@JollyJoker我不认为这是个把戏——它相当于
I==0
(这可能更具可读性)。这是线程上最好的解决方案,因为它将早期救援与现代功能语法结合起来。@ggorlen有些东西在Javascript中是标准的,在
[0,1,3,4,5]
它返回falseSee update,Thank@Lucarainonet关键是这个技巧很危险。例如,它不适用于负数。
[-2,0,3,4,5]
。但是你的解决方案也不适用于
[0,0,1,4,5]
每个
的回调都会获取值、索引和数组。您不是在将值与索引进行比较吗?请参阅更新,谢谢@LucaRainone[1,0,1]-true
(num <= arr[idx + 1]) || (idx === arr.length - 1)
 return 1 (truthy)