2016-11-14 158 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的循環,這很好,但是他們認爲這些值要麼都是字符串編號,要麼他們認爲這些值保存在一個簡單的數組中。不是一組對象。

我試過使用這個,但這不起作用。可能是因爲parseint不喜歡它。其實它崩潰的頁面:

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

我的第一步是轉換這些值。一旦我將lftrgt轉換爲整數,我將運行另一個功能,我會說「如果lft大於X並且rgt小於Y,則給我起名字」感覺材料「。

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和他的答案在這裏:

Cody's answer