2013-03-20 44 views
0

你如何转换这种只返回值:你如何分析一个阵列删除键,使用javascript

var values = [ 
    {name:'demian', email: '[email protected]', ID: 1}, 
    {name:'john' , email: '[email protected]' , ID: 2}, 
    {name:'mark' , email: '[email protected]' , ID: 3}, 
    {name:'pete ' , email: '[email protected]' , ID: 4} 
]; 

要这样:

var values = [ 
    {'demian', '[email protected]', 1}, 
    {'john' , '[email protected]' , 2}, 
    {'mark' , '[email protected]' , 3}, 
    {'pete ' , '[email protected]' , 4} 
]; 
+2

你的第二个版本是无效的JSON - 你的意思是从一个对象数组到一个数组数组(即在第二个版本中,大括号会变成方括号)? – 2013-03-20 14:56:36

+3

这些实际上是JOSN字符串,还是只是你正在使用的JavaScript?另外,你确定第二个例子是你想要的吗?因为它对我来说看起来不合法,也许你正在试图获得一组数组? – musefan 2013-03-20 14:56:40

+1

你不能。一个对象具有值存储的属性,您不能删除它们。你可以将它转换为一个数组,但我真的不明白为什么你想要;使用具有命名属性的对象而不是具有数字索引的数组更容易。 – 2013-03-20 14:57:42

回答

4

这是一个非常简单的解决方案,得到所有值(如阵列):

var data = [ 
    {name:'demian', email: '[email protected]', ID: 1}, 
    {name:'john' , email: '[email protected]' , ID: 2}, 
    {name:'mark' , email: '[email protected]' , ID: 3}, 
    {name:'pete ' , email: '[email protected]' , ID: 4} 
] 
var values = data.map(function(d) { return [d.name, d.email, d.ID] }) 
console.log(values) 
// output on console: 
// [ 
// ["demian", "[email protected]", 1], 
// ["john", "[email protected]", 2], 
// ["mark", "[email protected]", 3], 
// ["pete ", "[email protected]", 4] 
// ] 

我希望这有助于。

编辑 - 这里是一个更通用的解决方案:

values = data.map(function(d){ var a=[]; for(k in d) a.push(d[k]); return a }) 
console.log(values) 

不过,你需要确保你没有对你的对象附加属性(例如,由一些JS框架引入)。我更喜欢明确的方式。

+0

使用:Object.keys(values [0]); for keys。是否有类似的值 – Merlin 2013-03-20 15:11:14

+0

当我尝试使用Object.keys(values [0])来定义键时,它没有工作 – Merlin 2013-03-20 16:22:28

1

试试这个:

var val_array = []; 
for(var i in values) 
{ 
    val_array.push( 
     [values[i].name, values[i].email, values[i].ID]  
    ) 
} 
2

对于一般的使用,当你不知道该命名键,或者他们是不是在所有的对象一样,你可以使用这个脚本:

<script type="text/javascript"> 
var values = [ 
    {name:'demian', email: '[email protected]', ID: 1}, 
    {name:'john' , email: '[email protected]' , ID: 2}, 
    {name:'mark' , email: '[email protected]' , ID: 3}, 
    {name:'pete ' , email: '[email protected]' , ID: 4} 
]; 

var nrv = values.length; 
var values2 = [];   // to store the values, without named-keys 

for(var i=0; i<nrv; i++) { 
    values2[i] = []; 
    for each(var val in values[i]) { 
    values2[i].push(val); 
    } 
} 

console.log(values2); 

/* output on console 
[["demian", "[email protected]", 1], 
["john", "[email protected]", 2], 
["mark", "[email protected]", 3], 
["pete ", "[email protected]", 4]] 
*/ 
</script> 
+0

(值为[i]的var val){ SyntaxError:意外的标识符(对于每个) – Merlin 2013-03-20 18:10:42