2016-10-30 62 views
0

假设我有一个如下所示的对象:{first:“asdasd”,second:“asdas”,third:“dasdas”,4:“sdasa”} 需要将此对象转换为数组。如何将对象转换为angularjs中的数组Ionic

if(values){ 
    var first=values.first; 
    var second=values.second; 
    var third=values.third; 
    var four=values.four; 
    var five=values.five; 
    var six=values.six; 
    var seven=values.seven; 
    var eight=values.eight; 
    var nine=values.nine; 
    var ten=values.ten; 

    if(first){ 
    userData.push(first); 
    } 
    if(second){ 
    userData.push(second); 
    } 
    if(third){ 
    userData.push(third); 
    } 
    if(four){ 
    userData.push(four); 
    } 
    if(five){ 
    userData.push(five); 
    } 
    if(six){ 
    userData.push(six); 
    } 
    if(seven){ 
    userData.push(seven); 
    } 
    if(eight){ 
    userData.push(eight); 
    } 
    if(nine){ 
    userData.push(nine); 
    } 
    if(ten){ 
    userData.push(ten); 
    } 
    console.log(userData); 

我目前正在做这个代码,但我认为这是错误的做法。那么我怎么能改变这个看起来像[“asdasd”,“asdas”,“dasdas”,“sdasa”,“asdasd”,“asdas”,“dasdas”,“sdasa”]的数组。 当我在ng-repeat中使用对象时,在离子拖放指令中不起作用。当我将数组应用于ng-repeat时,它完美工作。

回答

2

有几种方法可以做到这一点。

人会使用Object.keys

Object.keys(values).forEach(function(key) { 
    userData.push(values[key]); 
}); 

您也可以使用for ... in这样的:

for (var key in values) { 
    userData.push(value[key]); 
} 

如果你的对象有任何属性从原型继承那么它也将显示,让你做需要检查属性是否真的属于这种情况:

for (var key in values) { //proper way to iterate keys using for..in 
    if(values.hasOwnProperty(key)) { 
     userData.push(value[key]); 
    } 
} 

由于您使用的角度,你也可以使用angular.forEach

angular.forEach(values, function(value){ 
    userData.push(value); 
}); 

,我认为这是你最干净的解决方案。

+0

非常感谢@Randall Flagg。 –

+0

你可以接受这个答案,如果你喜欢它,就可以加注。 –

1

`

 if(values) 
    { 
Object.keys(values).forEach(function(key) { 
    userData.push(values[key]); 
}); 
    } 

` 有时候,而不是一个简单的解决方案,我们想得太多,复杂的时间最终以解决方案,我们可以用小的简单的代码实现

+0

感谢@Parshuram的帮助。 –

+0

欢迎我的朋友 –

1

我建议使用javascript库的下划线或lodash这种数组和对象的操作和迭代,因为它似乎是最好的方式,保持你的代码清洁。 它是一个简单的JavaScript文件,您可以将其包含在您的项目中,并且不必做任何复杂的事情就可以使其工作。只需即插即用。

如果你有下划线/ lodash,所有你需要做的是: -

var mycoll = _.values(yourobjectvariable); 

这将获取该对象中所有的值,它会自动转换为数组你。

http://underscorejs.org/#values

或者,如果你想与普通的JavaScript做到这一点,我觉得上面的兰德尔标志的答案是足够了吧。

+0

非常感谢你@Neel –

相关问题