[javascript] JavaScript for 루프로 json을 만드는 방법은 무엇입니까?

내가 가진 배열 을 선택 태그를.

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

JavaScript에서 ‘uniqueIDofSelect 및 optionValue’필드가 두 개인 json 개체를 만들고 싶습니다.

getElementsByName ( “status”)을 사용하고이를 반복합니다.

편집하다

나는 밖으로 넣어 필요

[{"selectID":2,"OptionValue":"2"},
{"selectID":4,"optionvalue":"1"}]

등등…



답변

귀하의 요청에 대해 이해 한 바에 따르면 다음과 같이 작동합니다.

<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 sels = //Here is your array of SELECTs
var json = { };

for(var i = 0, l = sels.length; i < l; i++) {
  json[sels[i].id] = sels[i].value;
}


답변

다음과 같은 단일 JavaScript 객체를 원하는 경우 :

{ uniqueIDofSelect: "uniqueID", optionValue: "2" }

(여기서 옵션 2, “Absent”는 현재 선택입니다) 다음 코드가이를 생성해야합니다.

  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;
     }
  }

당신은 이러한 모든 객체의 배열 (선택된 하나뿐만 아니라) 사용하려는 경우 마이클의 코드 밖으로하지만 스왑 status.options[i].text를 들어 status.id.

선택한 객체의 JSON 표현이 포함 된 문자열 을 원하면 다음을 대신 사용하십시오.

  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;
     }
  }


답변

for 루프에 의해 생성 된 문자열에서 JavaScript Object를 생성하려면 JSON to Object 접근 방식을 사용합니다. for 루프를 반복하여 JSON 문자열을 생성 한 다음 인기있는 JavaScript 프레임 워크를 사용하여 JSON을 Object로 평가합니다.

내가 사용한 프로토 타입 자바 스크립트 프레임 워크 . 키와 값이있는 두 개의 배열이 있습니다. for 루프를 반복하고 유효한 JSON 문자열을 생성합니다. evalJSON () 함수를 사용 하여 JSON 문자열을 JavaScript 개체로 변환합니다.

다음은 예제 코드입니다. FireBug 콘솔 에서 사용해보기

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);


답변

귀하의 질문은 해독하기가 매우 어렵지만 찔러 보겠습니다.

당신은 말한다 :

두 개의 필드 uniqueIDofSelectoptionValue자바 스크립트 가있는 json 객체를 만들고 싶습니다
.

그리고 다음과 같이 말합니다.

다음과 같은 출력이 필요합니다.

[{"selectID":2,"optionValue":"2"},
{"selectID":4,"optionvalue":"1"}]

음,이 예제 출력라는 분야가 없습니다 uniqueIDofSelect, 그것은 단지있다 optionValue.

어쨌든, 당신은 객체의 배열을 요구하고 있습니다 …

그런 다음 마이클스에 대한 의견에서 다음과 같이 대답합니다.

json 객체 배열을 생성합니다. 하지만 하나의 json 객체 만 필요합니다.

그래서 당신은 객체의 배열을 원하지 않습니까?

그럼 뭘 원해?

마음을 정하십시오.


답변