如何通过JavaScript for loop创建json?

如何通过JavaScript for loop创建json?,javascript,json,Javascript,Json,我有select标记的数组 <select id='uniqueID' name="status"> <option value="1">Present</option> <option value="2">Absent</option> </select> 等等 根据我对您请求的理解,这应该可以: <script> // var status = document.getElem

我有select标记的数组

<select id='uniqueID' name="status">
      <option value="1">Present</option>
      <option value="2">Absent</option>
 </select>

等等

根据我对您请求的理解,这应该可以:

<script>
//  var status  = document.getElementsByID("uniqueID"); // this works too
var status  = document.getElementsByName("status")[0];
var jsonArr = [];

for (var i = 0; i < status.options.length; i++) {
    jsonArr.push({
        id: status.options[i].text,
        optionValue: status.options[i].value
    });
}
</script>

//var status=document.getElementsByID(“uniqueID”);//这也行
var status=document.getElementsByName(“状态”)[0];
var jsonArr=[];
对于(变量i=0;i
var sels=//这是您的选择数组
var json={};
对于(变量i=0,l=sels.length;i
如果您想要一个JavaScript对象,例如:

{ uniqueIDofSelect: "uniqueID", optionValue: "2" }
(其中选项2“缺席”是当前选择) 然后,以下代码将生成它:

  var jsObj = null;
  var status = document.getElementsByName("status")[0];
  for (i = 0, i < status.options.length, ++i) {
     if (options[i].selected ) {
        jsObj = { uniqueIDofSelect: status.id, optionValue: options[i].value };
        break;
     }
  }

你的问题很难理解,但我会试试看

你说:

我想创建一个包含两个字段的json对象 javascript中的uniqueIDofSelect和optionValue

然后你说:

我需要像这样的输出

[{"selectID":2,"optionValue":"2"},
{"selectID":4,"optionvalue":"1"}]
这个示例输出没有名为uniqueIDofSelect的字段,它只有选项值

无论如何,您要求的是对象数组

然后在对michaels回答的评论中,你说:


它创建json对象数组。但我只需要一个json对象

所以你不想要一个对象数组

那你想要什么


请下定决心。

如果我想从for循环生成的字符串创建JavaScript对象,那么我将采用JSON到对象的方法。我将通过迭代for循环生成JSON字符串,然后使用任何流行的JavaScript框架对JSON对象求值

我用过。我有两个带有键和值的数组。我遍历for循环并生成有效的JSON字符串。我使用函数将JSON字符串转换为JavaScript对象

下面是示例代码。在你的电脑上试用

var key=[“颜色”、“尺寸”、“面料”];
var值=[“黑色”、“XL”、“棉质”];
var json=“{”;
对于(变量i=0;i
我假设optionValue应该是每个“option”元素的“value”属性:1、2等。但是ID是什么?是文本吗?“现在”、“缺席”等?好的,如果ID是select的唯一ID,那么只能有一个optionValue,对吗?我想您想要的是当前选择,而不是所有选择的数组?JSON是一个对象而不是数组。它创建JSON对象数组。但是我只需要一个json对象;因为你的例子不适合我。当我更改为new Array()时,它就会工作。
var jsonArr=[]创建一个新数组<代码>var jsonObj={}
创建了一个新对象所以,愚蠢的问题,我知道对象数组和包含对象数组的对象之间的区别(在这篇文章中,
jsonArr=[]
jsonObj={}
之间的区别非常大)。我经常(甚至可能错误地)将一个对象称为“JSON对象”,该对象包含一个对象数组,每个对象都包含(可能不同的)名称/值对。熟悉简单的JSON语法(就像实际的
.JSON
文件中的语法一样),我知道这在语法上是不同的。那么,您是否也可以将对象数组称为JSON?第一件事:很抱歉,uniqueIDofSelect==selectID(select元素的Id,我可以将我的记录Id保留为select元素Id(用于记录更新)。我还将有foreach循环生成的select元素的数量。实际上,这个循环就是我们在asp.net MVC中用于显示可枚举对象的循环。2)你是对的,我的错误是,我很有趣,整个输出都是一个json对象。但它实际上是对象的数组。所以迈克尔的答案是完美的。谢谢你的指点。谢谢你,它帮了我很多忙,我使用了PARSE.json(jsonstring)而不是jsonstring.evalJSON(true);
  var jsObj = null;
  var status = document.getElementsByName("status")[0];
  for (i = 0, i < status.options.length, ++i) {
     if (options[i].selected ) {
        jsObj = { uniqueIDofSelect: status.id, optionValue: options[i].value };
        break;
     }
  }
  var jsonStr = "";
  var status = document.getElementsByName("status")[0];
  for (i = 0, i < status.options.length, ++i) {
     if (options[i].selected ) {
        jsonStr = '{ '
                  + '"uniqueIDofSelect" : '
                  + '"' + status.id + '"'
                  + ", "
                  + '"optionValue" : '
                  + '"'+ options[i].value + '"'
                  + ' }';
        break;
     }
  }
[{"selectID":2,"optionValue":"2"},
{"selectID":4,"optionvalue":"1"}]
var key = ["color", "size", "fabric"];
var value = ["Black", "XL", "Cotton"];

var json = "{ ";
for(var i = 0; i < key.length; i++) {
    (i + 1) == key.length ? json += "\"" + key[i] + "\" : \"" + value[i] + "\"" : json += "\"" + key[i] + "\" : \"" + value[i] + "\",";
}
json += " }";
var obj = json.evalJSON(true);
console.log(obj);