在Jquery的每个循环上创建关联数组

时间:2014-04-16 14:35:00

标签: jquery arrays loops

我尝试使用jquery创建一个新对象,但只有我的循环的最后一个元素被添加到我的对象

var selectArray ={}; 
    $.each(response, function( i, x ){
          selectArray['id'] = x.id;
          selectArray['text'] = x.name;                            
    });
 console.log(selectArray);

2 个答案:

答案 0 :(得分:3)

使用数组并推送包含键和值的新对象:

var selectArray = []; 
$.each(response, function( i, x ){
      selectArray.push({"id":x.id, "name":x.name})                           
});
console.log(selectArray);

答案 1 :(得分:0)

您已经说过"关联数组" (这不是JavaScript使用的术语;它们只是"对象"),所以我猜你想创建一个selectArray['some id']将给出的对象你name

var selectArray = {}; 
$.each(response, function( i, x ){
    selectArray[x.id] = x.name;
});
console.log(selectArray);

例如,如果您的response包含三个项目(ID" tjc" =>名称" TJ Crowder",id" joeblow" =>名称" Joe Blow"和id" bozscaggs" =>名称" Boz Scaggs"),你最终会得到一个对象看起来像这样:

{
    "tjc":       "T.J. Crowder",
    "joeblow":   "Joe Blow",
    "bozscaggs": "Boz Scaggs"
}

selectArray['tjc']

...会给你"T.J. Crowder"

完整示例:Live Copy

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<meta charset=utf-8 />
<title>Creating a lookup object</title>
</head>
<body>
  <p>Look in the console</p>
  <script>
    (function() {
      var response = [
        {id: "tjc", name: "T.J. Crowder"},
        {id: "joeblow", name: "Joe Blow"},
        {id: "bozscaggs", name: "Boz Scaggs"}
      ];
      var selectArray = {}; 
      $.each(response, function( i, x ){
        selectArray[x.id] = x.name;
      });
      console.log(selectArray);
    })();
  </script>
</body>
</html>