2011-08-24 73 views
4

我在javascript中有一个数组对象。我会从对象的所有行中选择一个特定的字段。如何从javascript数组中选择特定字段

我有一个像

var sample = { 
[Name:"a",Age:1], 
[Name:"b",Age:2], 
[Name:"c",Age:3] 
} 

一个对象,我想只得到名称的输出作为["a","b","c"]没有遍历样本对象。

如何使用jlinq选择一个或两个字段?或任何其他插件?

非常感谢。

+0

你的对象是无效的。这应该是一个数组。 – Dogbert

+0

为什么不循环? –

+0

@ Dogbert-对不起,外括号应该是[]和inner应该{} –

回答

2

你的定义是错误的。您不需要包含3个数组的对象,而需要一个对象数组。

这样的:

var sample = [{Name:"a",Age:1}, 
    {Name:"b",Age:2}, 
    {Name:"c",Age:3}]; 

然后,你可以这样做:

var name0 = sample[0].Name; 
var age0 = sample[0].Age; 

或获得所有人的名字按你的例子​​:

var names = [sample[0].Name,sample[1].Name,sample[2].Name]; 

但是,没有循环我不是确定你将如何得到任何数量的值....为什么不循环?

只是说你做循环,这里是你会怎么做:

var names = [] 
for(x in sample) 
    names.push(sample[x].Name); 

或使用jQuery(这仍然是循环)

sample= jQuery.map(sample, function(n, i){ 
    return n.Name; 
}); 
4

你可以试试这个:

var sample = [{Name:"a", Age:1}, {Name:"b", Age:2}, {Name:"c", Age:3}]; 
var Names = sample.map(function(item){return item.Name;}); 
+1

'array.map'不会被所有浏览器普遍支持。使用jQuery版本,你很安全。 – Jamiec

+0

@Jamiec:(...)在编写时,所有主流浏览器的新版本都支持“数组额外”(实际上是标准化的方法,而不是额外的)。 歌剧11+ 的Firefox 3.6+ Safari 5以上 铬8+ 的Internet Explorer 9+(来源:[dev.opera.com(HTTP:除非另有说明,所有讨论的方法可以安全地使用// dev.opera.com/articles/view/javascript-array-extras-in-detail/)) –

+1

喜欢不喜欢,9之前的IE版本正在被广泛使用。 – Jamiec

1

Javascript没有意义。它在合成上是不正确的。我假设你的意思是:

var sample = [ 
    {Name:"a",Age:1}, 
    {Name:"b",Age:2}, 
    {Name:"c",Age:3} 
] 

然后你可以使用jQuery做这样的事情:

var names = $(sample).map(function(){ return this.Name; }); 

但在现实中,所有的jQuery做的是通过你的对象循环。编写你自己的循环会(无意义)更快。没有循环就没有办法做到这一点。

0
// assuming you mean: 
var sample = [ 
    {Name:"a",Age:1}, 
    {Name:"b",Age:2}, 
    {Name:"c",Age:3} 
] 

那么,你最大的问题就是无论发生什么事情,你都必须循环。现在,jQuery将让你隐藏与行为:

var output = [] 
$.each(sample, function(i,e){ output.push(e.Name)}); 

但从根本上讲,这是因为同一件事:

for(var i = 0; i < sample.length; i++) 
{ 
    output.push(v.Name) 
} 
相关问题