[javascript] JavaScript에서 키 => 값 배열을 저장하는 가장 좋은 방법은 무엇입니까?

key=>value자바 스크립트 로 배열 을 저장하는 가장 좋은 방법은 무엇 이며 어떻게 반복 할 수 있습니까?

각 요소의 키는 {id}또는 태그와 같은 태그 id여야하며 값은 id의 숫자 값이어야합니다.

기존 자바 스크립트 클래스의 요소이거나 클래스를 통해 쉽게 참조 할 수있는 전역 변수 여야합니다.

jQuery를 사용할 수 있습니다.



답변

이것이 바로 JavaScript 객체입니다.

var myArray = {id1: 100, id2: 200, "tag with spaces": 300};
myArray.id3 = 400;
myArray["id4"] = 500;

loop를 사용하여 for..in반복 할 수 있습니다 .

for (var key in myArray) {
  console.log("key " + key + " has value " + myArray[key]);
}

참조 : 객체 작업 (MDN).

ECMAScript6에는 다음도 있습니다 Map(브라우저 호환성 표 참조).

  • 객체에는 프로토 타입이 있으므로 맵에 기본 키가 있습니다. ES5부터 map = Object.create (null)을 사용하여이를 우회 할 수 있지만 거의 수행되지 않았습니다.

  • 객체의 키는 문자열 및 기호이며 맵의 모든 값이 될 수 있습니다.

  • 오브젝트의 크기를 수동으로 추적해야하는 동안 맵의 크기를 쉽게 얻을 수 있습니다.


답변

내가 당신을 올바르게 이해했다면 :

var hash = {};
hash['bob'] = 123;
hash['joe'] = 456;

var sum = 0;
for (var name in hash) {
    sum += hash[name];
}
alert(sum); // 579


답변

Map 을 사용할 수 있습니다 .

  • JavaScript ES6에 도입 된 새로운 데이터 구조.
  • 키 / 값 쌍을 저장하기위한 JavaScript 객체의 대안입니다.
  • 키 / 값 쌍을 반복하는 데 유용한 방법이 있습니다.
var map = new Map();
map.set('name', 'John');
map.set('id', 11);

// Get the full content of the Map
console.log(map); // Map { 'name' => 'John', 'id' => 11 }

키를 사용하여지도의 가치를 얻으십시오

console.log(map.get('name')); // John 
console.log(map.get('id')); // 11

지도의 크기를 가져옵니다

console.log(map.size); // 2

지도에 확인 키가 있습니다

console.log(map.has('name')); // true
console.log(map.has('age')); // false

열쇠 받기

console.log(map.keys()); // MapIterator { 'name', 'id' }

가치 얻기

console.log(map.values()); // MapIterator { 'John', 11 }

지도의 요소를 가져옵니다

for (let element of map) {
  console.log(element);
}

// Output:
// [ 'name', 'John' ]
// [ 'id', 11 ]

키 값 쌍 인쇄

for (let [key, value] of map) {
  console.log(key + " - " + value);
}

// Output: 
// name - John
// id - 11

지도의 키만 인쇄

for (let key of map.keys()) {
  console.log(key);
}

// Output:
// name
// id

지도 값만 인쇄

for (let value of map.values()) {
  console.log(value);
}

// Output:
// John
// 11


답변

자바 스크립트에서 키 값 배열은 객체로 저장됩니다. 자바 스크립트에는 배열과 같은 것이 있지만 여전히 객체로 간주됩니다.이 사람들의 대답을 확인하십시오- 왜 명명 된 속성을 객체처럼 배열에 추가 할 수 있습니까?

배열은 일반적으로 대괄호 구문과 중괄호 구문을 사용하는 객체 ( “키 => 값”배열)를 사용하여 표시되지만 Alexey Romanov가 표시 한대로 대괄호 구문을 사용하여 객체 속성에 액세스하고 설정할 수 있습니다.

자바 스크립트의 배열은 일반적으로 숫자, 자동 증분 키에만 사용되지만, 자바 스크립트 객체는 명명 된 키 값 쌍, 함수 및 다른 객체도 보유 할 수 있습니다.

간단한 배열 예.

$(document).ready(function(){

    var countries = ['Canada','Us','France','Italy'];
    console.log('I am from '+countries[0]);
    $.each(countries, function(key, value) {
        console.log(key, value);
    });

});

출력-

0 “캐나다”

1 “미국”

2 “프랑스”

3 “이탈리아”

위에서 jQuery.each 함수를 사용하여 숫자 형 배열을 반복하고 숫자 키가있는 대괄호를 사용하여 루프 외부의 정보에 액세스 할 수 있습니다.

단순 객체 (JSON)

$(document).ready(function(){

    var person = {
        name: "James",
        occupation: "programmer",
        height: {
            feet: 6,
            inches: 1
        },
    }

    console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation);

    $.each(person, function(key, value) {
        console.log(key, value);
    });

});

출력-

제 이름은 제임스이고 저는 6 피트 1 프로그래머입니다.

제임스 이름

직업 프로그래머

높이 객체 {피트 : 6, 인치 : 1}

php와 같은 언어에서 이것은 키 값 쌍을 가진 다차원 배열 또는 배열 내의 배열로 간주됩니다. 키 값 배열을 반복하는 방법에 대해 질문했기 때문에 위의 person 객체와 같은 객체 (key => value array)를 얻는 방법을 알고 싶을 것입니다.

자, 우리는 자바 스크립트 배열이 일반적으로 숫자 인덱싱에 사용되며 객체를 연관 인덱싱에 더 유연하게 사용한다는 것을 알았으므로, 그것들을 함께 사용하여 반복 할 수있는 객체의 배열을 만들 것입니다-

JSON 배열 (객체 배열)-

$(document).ready(function(){

    var people = [
        {
            name: "James",
            occupation: "programmer",
            height: {
                feet: 6,
                inches: 1
            }
        }, {
            name: "Peter",
            occupation: "designer",
            height: {
                feet: 4,
                inches: 10
            }
        }, {
            name: "Joshua",
            occupation: "CEO",
            height: {
                feet: 5,
                inches: 11
            }
        }
    ];

    console.log("My name is "+people[2].name+" and I am a "+people[2].height.feet+" ft "+people[2].height.inches+" "+people[2].occupation+"\n");

    $.each(people, function(key, person) {
        console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation+"\n");
    });

});

출력-

저는 Joshua이고 5 ft 11 CEO입니다

제 이름은 제임스이고 저는 6 피트 1 프로그래머입니다.

제 이름은 Peter이고 저는 4 ft 10 디자이너입니다

저는 Joshua이고 5 ft 11 CEO입니다

루프 외부에서 숫자 키와 함께 대괄호 구문을 사용해야합니다. 이는 숫자로 인덱스 된 객체 배열이므로 물론 루프 내부에서 숫자 키가 암시됩니다.


답변

배열 내부의 객체 :

var cars = [
        { "id": 1, brand: "Ferrari" }
        , { "id": 2, brand: "Lotus" }
        , { "id": 3, brand: "Lamborghini" }
    ];


답변

간단히 이렇게

var key = "keyOne";
var obj = {};
obj[key] = someValue;


답변

나는 그것이 늦다는 것을 알고 있지만 다른 방법을 원하는 사람들에게는 도움이 될 수 있습니다. array key => 값을 저장할 수있는 또 다른 방법은 map ()이라는 배열 메서드를 사용하는 것입니다. ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map ) 화살표 기능도 사용할 수 있습니다

 
    var countries = ['Canada','Us','France','Italy'];  
// Arrow Function
countries.map((value, key) => key+ ' : ' + value );
// Anonomous Function
countries.map(function(value, key){
return key + " : " + value;
});