2013-03-20 45 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