如何从javascript数组中选择特定字段

时间:2011-08-24 08:03:34

标签: javascript jquery jquery-plugins

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

我有像

这样的对象
var sample = {
[Name:"a",Age:1],
[Name:"b",Age:2],
[Name:"c",Age:3]
}

我希望只将名称输出为["a","b","c"]而不循环遍历示例对象。

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

非常感谢。

4 个答案:

答案 0 :(得分:5)

你的定义是错误的。不需要包含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;
});

答案 1 :(得分:5)

你可以试试这个:

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

答案 2 :(得分: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都在为你循环遍历这个对象。编写自己的循环(不显着)会更快。没有循环就没有办法做到这一点。

答案 3 :(得分: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 )
}