2016-11-14 4 views
0

JSの操作。私はオブジェクトの配列を持っています。以下にサンプルを示します。すべての値が文字列であることがわかります。しかし、lftrgtの値を整数に変換して、これらの値を別の配列に保持されている他の値と比較できるようにする必要があります。それらを文字列にして比較すると誤った結果になります。オブジェクトの配列を解析し、文字列番号を整数に変換する方法

nodesWithchildren 

:Array[1] 
0:Object 
category_id:"8" 
created_at:"2016-11-04 14:14:28" 
lft:"17" 
name:"Felt Materials" 
rgt:"22" 
updated_at:"-0001-11-30 0:00:00" 
__proto__:Object 

私はStackoverflowで検索し、さまざまな提案を見つけました。それらのすべては、偉大なparseIntを持つforループを使用しますが、値がすべて文字列番号であり、値が単純な配列に保持されていると仮定します。オブジェクトの配列ではありません。

これを使ってみましたが、これはうまくいきません。おそらくparseintはそれを好まないからでしょう。実際にページがクラッシュする:

var nodesWithchildrenParsed =[]; 
for(var i=0; nodesWithchildren.length;i++){ 
nodesWithchildrenParsed[i] = parseInt(nodesWithchildren[i]);} 

私の最初のステップはこれらの値を変換しています。 lftrgtが整数に変換されたら、私は "lftがXより大きく、rgtがYより小さくて、それから私に名前" feel felt materials "を与える別の関数を実行します。

Tks !

答えて

0

parseint()を使用せずに文字列を数値に変換する簡単な方法は、文字列を整数1で単純に割り算することです。私の場合、これは完璧な解決策でした。文字列はオブジェクトの配列に含まれていましたが、それ以外は次のようになります。

var childNodes=[]; 
     for(i=0; i < selectedArray.length; i++){ 
      if((selectedArray[i].lft /1) > (nodesWithchildren[0].lft /1) && (selectedArray[i].rgt/ 1) < (nodesWithchildren[0].rgt/1)) { 
       childNodes += selectedArray[i].name; 
      } 
     } 

JSは文字列を変換しますその上で何らかの操作を行う前に。コーディの例:

console.log(('2'/1) > ('10'/1));

クレジットはコーディに行くと、ここで彼の答え:

Cody's answer

関連する問題