【问题标题】:How to get each specific value in an array?如何获取数组中的每个特定值?
【发布时间】:2017-03-29 23:07:01
【问题描述】:

我希望能够从以下数组中提取每个“hire_address”值并将其添加到单独的数组中。

var addr =
{  
   "status":"success",
   "data":[  
      {  
         "start":"2017-01-26 12:30:00",
         "hire_oucu":"ac2",
         "hire_address":"Glasgow",
         "offer_oucu":"ac1",
         "offer_address":"Glasgow"
      },
      {  
         "start":"2017-01-26 12:30:00",
         "hire_oucu":"ac2",
         "hire_address":"Poole",
         "offer_oucu":"ac1",
         "offer_address":"Poole"
      }
      {  
         "start":"2017-01-26 12:30:00",
         "hire_oucu":"ac2",
         "hire_address":"Hastings",
         "offer_oucu":"ac1",
         "offer_address":"Hastings"
      }
      {  
         "start":"2017-01-26 12:30:00",
         "hire_oucu":"ac2",
         "hire_address":"London",
         "offer_oucu":"ac1",
         "offer_address":"London"
      }
   ]
};

我现在有

var addresses = [];
$.each(addr.data.hire_address, function (index, value) {
addresses.push(value);

但没有任何运气。有什么建议吗?

感谢您的回复。

我现在有

var addresses = [];
$.each(addr, function (index, value) {
    if (value == "data"){
        addresses.push(value.hire_address);
    }
}
);

但似乎无法让它工作。我需要if 声明吗?我添加了这个,因为第一项是“状态”,如果我尝试添加它的“hire_address”属性,则会遇到错误,因为它不存在。

【问题讨论】:

  • 你意识到你少了几个逗号?在第一个内部对象之后,其余部分之间没有任何逗号。

标签: javascript arrays iteration


【解决方案1】:

$.each 有两个参数,第一个是一个数组。您应该传入要循环的数组。

第二个参数是调用数组中每个项目的函数。它存储在 value 参数中。如果您正在遍历数组,您可以像这样访问正确的属性:

value.hire_address

http://api.jquery.com/jquery.each/

【讨论】:

    【解决方案2】:

    使用 Array.map

    addr.data.map(d => d.hire_address)
    

    【讨论】:

      【解决方案3】:

      您可以使用Array#map()

      var addr = {
        "status": "success",
        "data": [{
            "start": "2017-01-26 12:30:00",
            "hire_oucu": "ac2",
            "hire_address": "Glasgow",
            "offer_oucu": "ac1",
            "offer_address": "Glasgow"
          },
          {
            "start": "2017-01-26 12:30:00",
            "hire_oucu": "ac2",
            "hire_address": "Poole",
            "offer_oucu": "ac1",
            "offer_address": "Poole"
          }, {
            "start": "2017-01-26 12:30:00",
            "hire_oucu": "ac2",
            "hire_address": "Hastings",
            "offer_oucu": "ac1",
            "offer_address": "Hastings"
          }, {
            "start": "2017-01-26 12:30:00",
            "hire_oucu": "ac2",
            "hire_address": "London",
            "offer_oucu": "ac1",
            "offer_address": "London"
          }
        ]
      };
      
      let myArray = addr.data.map(d => d["hire_address"]);
      console.log(myArray);

      【讨论】:

        【解决方案4】:

        在你修复你的对象后(见我的评论),你可以在没有 jQuery 的情况下简单地迭代:

        var addresses=[];
        addr.data.forEach(function(a){
            addresses.push(a.hire_address);
        });
        alert(addresses);
        

        JavaScript .forEach() 数组方法与 jQuery 的 .each() 执行类似的工作,但没有开销。

        或者,对于旧版浏览器:

        for(var i=0;i<addr.data.length;i++)
            addresses.push(addr.data[i].hire_address);
        

        【讨论】:

          猜你喜欢
          • 2013-03-17
          • 2021-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-23
          • 1970-01-01
          相关资源
          最近更新 更多