私はJavaScriptにまったく慣れていませんが、Pythonには精通しています。Pythonでは、次の出力が得られます。
In [1]: [1,9,[5,4,2]] > [1,9,[14,5,4]]
Out[1]: False
JavaScriptの場合:
> [1,9,[5,4,2]] > [1,9,[14,5,4]]
true
比較の前に配列が文字列に変換されているようです。
今、私は自分で関数を書き、配列をウォークスルーして各要素を比較したいと思いました。私はこのコーヒースクリプトコードを思いついた:
compare_list = (a, b)->
if typeof a == "object" and typeof b != "object"
return 1
else if typeof a != "object" and typeof b == "object"
return -1
else if typeof a != "object" and typeof b != "object"
if a > b
return 1
else if a < b
return -1
else
return 0
else if typeof a == "object" and typeof b == "object"
for i in [0...a.length]
if i > (b.length-1)
return 1
tmp = compare_list a[i], b[i]
if tmp != 0
return tmp
if b.length > a.length
return -1
return 0
それはこのように機能しますが、そのtypeof a == "object"
部分は私には正しく見えません。よりシンプル/より良い/より堅牢なソリューションはありますか?
ご協力いただきありがとうございます。