Проверка на сортировку

Есть массив с числами, нужно проверить есть ли в массиве элемент, удалив который массив будет отсортирован по возростанию.(убрать можно только одно число, в любых других случаях должен быть false) На пример: [1,3,2] если убрать 3, то массив будет по возростанию. Есть 4 варианта для которых код должен быть правильным:

[1,3,2]-true

[2,4,2,1]-false

[5,5,5,5,5]-false

[5,6,7]-true

мой код:

function solution(x){
return x.sort((a,b)=>a-b)?true:false
  for(let i=0;i<x.length;i++){
  	if(x.splice(i)===x.sort((a,b)=>a-b)){
    return true
    }
    return false
  }
}


Ответы (1 шт):

Автор решения: teran

вариация на тему

function check(v){    
    
    return 1 >= v.reduce((acc, c) => (c > acc.m ? acc.m = c  : acc.x++, acc), 
                   { m: Number.MIN_VALUE, x:0 }
                ).x;
}


const data = [
      [1,3,2],
      [2,4,2,1],
      [5,5,5,5,5],
      [5,6,7]
     ];
     
data.forEach(d => console.log(d, check(d)));

→ Ссылка