Javascript に整数の配列があり、そのすべての値が昇順であるかどうかを確認したいとします。私が望むのは、アルゴリズムが直前の値を比較するだけでなく、その前の値を比較するよりも低い(または等しい)値を見つけた場合に備えて、配列キーを別の配列に保存することです。私がしたことはこれでした:
arr = [], nonvalid = [];
for (var j = 1; j < arr.length; j++){
if ( arr[j+1] <= arr[j] ){
nonvalid.push(j);
}
}
明らかに、上記のアルゴリズムは、前の値と比較して低い値のみをチェックします。
配列には、次のような値が含まれる場合があります。
arr = 1、2、3、10、5、11、12、2、4、25 _ _ _ _
無効な値は太字です。上記のループを実行すると、最後から 2 番目のもの ( 4 )は「キャッチ」されません。これは、最も近い左の兄弟よりも高いが、すべての左の兄弟よりも高くないためです。
編集:
次の解決策を試しましたが、 mine を除いて、この配列のすべての無効な値を返すものはありません。:(
最後の 2 つの値は正しく返されましたが、2 番目の値は返されませんでした。理由はわかりませんが。
[ 24398、24397, 25004, 25177, 26302, 28036, 29312, 29635, 29829, 30476, 32595, 33732, 34995, 36047, 36363, 37310, 38022, 38882, 40746, 41212, 42846, 43588, 44029, 44595, 44846, 45727, 46041 、47293、48002、48930、49858、51184、51560、53895、54247、54614、55713、56813、57282、57480、57875、58073、58403、60321、61469、6145、655169、655169、655169、655169、655169、655169、655169、655169、655169、655169、655169 、65940、66203、66572、67957、68796、68964、69098、69233、69435、69759、71496、72577、72823、73007、73252、73743、73866、737666、76666、76666、76666、76666、76666、766666666666、7666666666、76664 、82067、82431、83244、84861、86836、88632、89877、90296、91049、91885、92351、92614、93141、93733、93930、94531、95206、952、952、952、952655、、 100599、101666、102066、102600、103504、104432、105174、107216、109085、110181、110679、111177、111988、112553、7、113005、113005、600 ]