如何解析数组以删除键,仅使用javascript返回值

时间:2013-03-20 14:53:46

标签: javascript json parsing

如何转换此内容:

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

对此:

var values = [
    {'demian', 'demian@gmail.com', 1},
    {'john'  , 'john@gmail.com'  , 2},
    {'mark'  , 'mark@gmail.com'  , 3},
    {'pete ' , 'pete@gmail.com'  , 4}
];

3 个答案:

答案 0 :(得分:4)

这是一个非常简单的解决方案,它从对象列表中获取所有值(作为数组):

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

我希望这会有所帮助。

修改 - 这是一个更通用的解决方案:

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

但是,您需要确保在对象上没有其他属性(例如,由某些JS框架引入)。我更喜欢明确的方式。

答案 1 :(得分:2)

对于一般用法,当您不知道命名密钥,或者它们在所有对象中不相同时,您可以使用此脚本:

<script type="text/javascript">
var values = [
    {name:'demian', email: 'demian@gmail.com', ID: 1},
    {name:'john'  , email: 'john@gmail.com'  , ID: 2},
    {name:'mark'  , email: 'mark@gmail.com'  , ID: 3},
    {name:'pete ' , email: 'pete@gmail.com'  , 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", "demian@gmail.com", 1],
["john", "john@gmail.com", 2],
["mark", "mark@gmail.com", 3],
["pete ", "pete@gmail.com", 4]]
*/
</script>

答案 2 :(得分:1)

试试这个:

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