【问题标题】:How to select a particular field from javascript array如何从javascript数组中选择特定字段
【发布时间】:2011-08-24 08:03:34
【问题描述】:

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

我有一个类似的对象

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

我想在不循环示例对象的情况下仅输出名称为 ["a","b","c"]

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

非常感谢。

【问题讨论】:

  • 您的对象无效。那应该是一个数组。
  • @Dogbert-抱歉外大括号应该是 [] 而内大括号应该是 {}

标签: javascript jquery jquery-plugins


【解决方案1】:

你可以试试这个:

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

【讨论】:

  • array.map 不会被所有浏览器普遍支持。使用jQuery版本,你是安全的。
  • @Jamiec: (...) 在撰写本文时,所有主要浏览器的新版本都支持“Array extras”(实际上是标准化方法,而不是 extras)。除非另有说明,否则所有讨论的方法都可以安全地用于:Opera 11+ Firefox 3.6+ Safari 5+ Chrome 8+ Internet Explorer 9+(来源:dev.opera.com
  • 谢谢,它的工作。但基本上它也只循环,所以我认为我不能避免循环甚至间接。由于我使用的是 IE 8,我将使用 jquery map。
【解决方案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;
});

【讨论】:

    【解决方案3】:

    那个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 所做的只是为您循环遍历对象。编写自己的循环会(微不足道)更快。没有循环就无法做到这一点。

    【讨论】:

      【解决方案4】:
      let names = [];
      this.dtoArray.forEach(arr => names.push(arr.name));
      

      【讨论】:

        【解决方案5】:
        // 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 )
        }
        

        【讨论】:

          猜你喜欢
          • 2021-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-28
          • 2016-12-10
          • 1970-01-01
          • 2022-08-19
          • 1970-01-01
          相关资源
          最近更新 更多