Ник*_*тев 16 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, 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');
}
}
Run Code Online (Sandbox Code Playgroud)
我需要打印新行上的所有列表true或false.对于此示例,我的输出必须是:
真正
真正
假
我不知道如何解决这个问题.
Stu*_*art 19
这样的事情怎么样:
!![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
Run Code Online (Sandbox Code Playgroud)
Reduce将字面上减少到单个值 - 在我们的例子中是一个布尔值.
在这里,我们每次迭代调用一个函数(n, item)
,它是我们的函数签名,它是正文n !== false && item >- n && item
- 我们确保n
存在(n是我们的累加器 - 读取!),测试是否item
大于n
,并确保item
存在.
对阵列中的每个元素都会发生这种情况.然后我们使用!!
强制结果为tru布尔值.
Has*_*mam 16
您可以使用array#every
检查每个值是否大于先前的值.
const isSorted = arr => arr.every((v,i,a) => !i || a[i-1] <= v);
console.log(isSorted([1,2,3,4,5]));
console.log(isSorted([1,2,8,9,9]));
console.log(isSorted([1,2,2,3,2]));
Run Code Online (Sandbox Code Playgroud)
Ram*_*ran 10
只需通过使用
slice
方法尝试这种方式 :它将检查前一个元素是否小于下一个元素.如果每个元素的条件为真,那么它将返回true,否则为false
arr.slice(1).every((item, i) => arr[i] <= item);
Run Code Online (Sandbox Code Playgroud)
请在下面查看以下示例作为演示
var arr = [[1,2,3,4,5],[1,2,8,9,9],[1,2,2,3,2],[0,1,2,3,4,5]];
function isArrayIsSorted (arr) {
return arr.slice(1).every((item, i) => arr[i] <= item)
}
var result= [];
for (var i = 0; i < arr.length; i++){
result.push(isArrayIsSorted(arr[i]))
}
console.log(result);
Run Code Online (Sandbox Code Playgroud)
var str = ["1,2,3,4,5", "1,2,8,9,9", "1,2,2,3,2"];
for (var i in str){
var list = str[i].split(',').map(Number);
console.log(list);
var isSorted = true;
for(var j = 0 ; j < list.length - 1 ; j++){
if(list[j] > list[j+1]) {
isSorted = false;
break;
}
}
console.log(isSorted);
}
Run Code Online (Sandbox Code Playgroud)
every()
如果所有数字都是有序的,则使用将返回 true 的方法,否则将返回 false。条件如下:
(num <= arr[idx + 1]) || (idx === arr.length - 1)
Run Code Online (Sandbox Code Playgroud)
如果当前数字小于或等于下一个数字...
或者...
如果当前索引等于最后一个索引...
return 1 (truthy)
Run Code Online (Sandbox Code Playgroud)
(num <= arr[idx + 1]) || (idx === arr.length - 1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3043 次 |
最近记录: |