[javascript] 숫자를 ‘색인'(JSON)으로 사용

최근에 JSON을 파고 들기 시작했고 현재는 숫자를 “식별자”로 사용하려고하는데 너무 잘 작동하지 않습니다. foo:"bar"잘 작동하지만 0:"bar"그렇지 않습니다.

var Game = {
    status: [
                {
                    0:"val",
                    1:"val",
                    2:"val"
                },
                {
                    0:"val",
                    1:"val",
                    2:"val"
                }
           ]
}

alert(Game.status[0].0);

다음과 같은 방법으로 수행 할 수있는 방법이 있습니까? Game.status[0].0내 인생을 더 쉽게 만들어 줄 것 같은 것. 물론 주위에 다른 방법이 있지만이 방법이 선호됩니다.



답변

JSON은 키 이름 만 문자열로 허용합니다. 이러한 문자열은 숫자 값으로 구성 될 수 있습니다.

그래도 JSON을 사용하고 있지 않습니다. JavaScript 개체 리터럴이 있습니다. 당신은 할 수 있습니다 키에 대한 식별자를 사용하지만, 식별자는 숫자로 시작할 수 없습니다. 그래도 문자열을 사용할 수 있습니다.

var Game={
    "status": [
        {
            "0": "val",
            "1": "val",
            "2": "val"
        },
        {
            "0": "val",
            "1": "val",
            "2": "val"
        }
    ]
}

점 표기법으로 속성에 액세스하는 경우 식별자를 사용해야합니다. 대신 대괄호 표기법 사용 : Game.status[0][0].

그러나 그 데이터가 주어지면 배열이 더 의미가있는 것 같습니다.

var Game={
    "status": [
        [
            "val",
            "val",
            "val"
        ],
        [
            "val",
            "val",
            "val"
        ]
    ]
}


답변

먼저 JSON이 아닙니다. JSON은 모든 키가 문자열이어야한다고 요구합니다.

둘째, 일반 배열은 원하는 작업을 수행합니다.

var Game = {
  status: [
    [
      "val",
      "val",
      "val"
    ],
    [
      "val",
      "val",
      "val"
    ]
  }

을 사용하면 작동합니다 Game.status[0][0]. 점 표기법 ( .0) 과 함께 숫자를 사용할 수 없습니다 .

또는 숫자를 인용 할 수 있습니다 (예 🙂 { "0": "val" }.... 배열 대신 일반 객체가 있지만 동일한 구문이 작동합니다.


답변

아마도 어레이가 필요하십니까?

var Game = {

    status: [
        ["val", "val","val"],
        ["val", "val", "val"]
    ]
}

alert(Game.status[0][0]);


답변

자바 스크립트 객체 속성의 이름은 밑줄 또는 편지 중 하나로 시작하지 않는 경우, 당신은 (같은 점 표기법을 사용하지 못할 Game.status[0].0), 당신은 해야 되는 다른 표기법을 사용합니다 Game.status[0][0].

한 가지 다른 참고 사항, 상태 배열 내부의 객체가되어야합니까? 배열과 같은 객체를 사용하는 경우 대신 실제 배열을 사용하지 않는 이유는 무엇입니까?


답변

JSON은 키 유형을 문자열로 규제합니다. 목적은 객체의 멤버에 액세스하기 위해 점 표기법을 지원하는 것입니다.

예 : person = { “height”: 170, “weight”: 60, “age”: 32}. person.height, person.weight 등으로 멤버에 액세스 할 수 있습니다. JSON이 값 키를 지원하는 경우 이는 person.0, person.1, person.2와 같습니다.


답변

는 어때

Game.status[0][0] or Game.status[0]["0"] ?

이 중 하나가 작동합니까?

추신 : 귀하의 질문에있는 것은 JSON이 아닌 Javascript 객체입니다. JSON은 자바 스크립트 객체의 ‘문자열’버전입니다.


답변

JSON은 “JavaScript Object Notation”입니다. JavaScript는 키가 문자열 또는 기호 여야한다고 지정합니다.

MDN Docs의 다음 인용문은 “키 / 값”이라는 용어를 자주들을 때 “키 / 속성”이라는 용어를 사용합니다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Objects

JavaScript에서 객체는 속성 모음으로 볼 수 있습니다. 객체 리터럴 구문을 사용하면 제한된 속성 집합이 초기화됩니다. 그런 다음 속성을 추가하고 제거 할 수 있습니다. 속성 값은 다른 개체를 포함하여 모든 유형의 값이 될 수 있으므로 복잡한 데이터 구조를 구축 할 수 있습니다. 속성은 키 값을 사용하여 식별됩니다. 키 값은 문자열 또는 기호 값입니다.