2016-12-15 62 views
2

我试图对象的值转换成整数:jQuery的转换对象值成数字

var array = { 
    borderTopLeftRadius:"0px", 
    borderTopRightRadius:"0px", 
    borderBottomLeftRadius:"0px", 
    borderBottomRightRadius:"0px" 
} 

我想保持相同的结构,但结果应该是这样的:

var array = { 
    borderTopLeftRadius:0, 
    borderTopRightRadius:0, 
    borderBottomLeftRadius:0, 
    borderBottomRightRadius:0 
} 

我一直在使用$map做到这一点,但我不能让它工作

var newArray = $.map(array, function(value){ 
    return parseInt(value, 10); 
}); 
+5

旁注:你的'数组'实际上不是一个数组。这是一个对象。 –

+0

是的,它在标题和说明中也有说明。 – Alko

+0

@Alko但是你试图映射一个对象......? – Li357

回答

3

首先你已经在Object literal {},而不是一个array [],你可以使用jQuery方法.each()以实现:

var myObject = { 
 
    borderTopLeftRadius:"0px", 
 
    borderTopRightRadius:"0px", 
 
    borderBottomLeftRadius:"0px", 
 
    borderBottomRightRadius:"0px" 
 
}; 
 
var newObject = {}; 
 

 
$.each(myObject, function(key, value) { 
 
    newObject[key]=parseInt(value, 10); 
 
}); 
 

 
console.log(newObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

感谢它的完美。我已经接受你的答案。我从来没有说过我想要转换一个数组。标题说一个对象。仅仅因为我命名了变量数组,它并不意味着这一点。这是为了演示的目的。 – Alko

+0

只是为了清楚地说明,人们感到困惑,因为你使用了数组标签来暗示帖子是关于数组的。变量名应该暗示变量的含义。 – AtheistP3ace

2

array数组。 JavaScript没有关联数组,它有对象 - 这就是你所拥有的。

jQuery的$.map函数对数组和对象都有效,但它只返回数组。因此,你的对象是转换成到一个数组。

你可以遍历对象的钥匙,并建立与整数值的新对象:

var newArray = {}; 
Object.keys(array).forEach(function(key){ 
    newArray[key] = parseInt(array[key], 10); 
}); 
0

您可以用for

var array = { 
 
    borderTopLeftRadius:"0px", 
 
    borderTopRightRadius:"0px", 
 
    borderBottomLeftRadius:"0px", 
 
    borderBottomRightRadius:"0px" 
 
} 
 

 
for (var key in array) { 
 
    array[key] = parseInt(array[key],10); 
 
} 
 

 
console.log(array);

达到的效果