如何解析对象数组并将字符串数转换为整数

时间:2016-11-14 22:19:18

标签: javascript-objects

使用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!

1 个答案:

答案 0 :(得分: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