게시물에서 :
Dictionary <문자열, 문자열>로 수신 할 JSON 배열 보내기
나는 그 게시물과 같은 일을하려고합니다. 유일한 문제는 키와 값이 무엇인지 모르는 것입니다. 따라서 키와 값 쌍을 동적으로 추가 할 수 있어야하며 어떻게해야할지 모르겠습니다.
누구든지 해당 객체를 만들고 키 값 쌍을 동적으로 추가하는 방법을 알고 있습니까?
난 노력 했어:
var vars = [{key:"key", value:"value"}];
vars[0].key = "newkey";
vars[0].value = "newvalue";
그러나 그것은 작동하지 않습니다.
답변
var dict = []; // create an empty array
dict.push({
key: "keyName",
value: "the value"
});
// repeat this last part as needed to add more key/value pairs
기본적으로 두 속성 ( key
및 value
)을 사용하여 객체 리터럴을 만들고을 사용 push()
하여 배열에 삽입합니다 .
편집 : 거의 5 년 후,이 대답은 “일반적인”JS 객체 리터럴 (일명 해시, 일명 사전)을 생성하지 않기 때문에 다운 투표를 받고 있습니다.
이 되어 있지만 OP가 요구되는 구조 생성 (그리고 이는 연결된 다른 문제에 도시)이며, 오브젝트 리터럴 배열 각각, key
및 value
특성. 왜 그 구조가 필요한지 묻지 말고 요청한 구조입니다.
그러나 OP가 요청한 구조가 아닌 일반 JS 객체에서 원하는 것이 있으면 tcll ‘s answer를 참조하십시오 . 유효한 JS 이름 인 간단한 키만 있으면 대괄호 표기법이 약간 번거 롭습니다. 당신은 이것을 할 수 있습니다 :
// object literal with properties
var dict = {
key1: "value1",
key2: "value2"
// etc.
};
또는 객체를 만든 후 일반 점 표기법을 사용하여 속성을 설정하십시오.
// empty object literal with properties added afterward
var dict = {};
dict.key1 = "value1";
dict.key2 = "value2";
// etc.
당신은 할 당신이 그런 그들에 공백, 특수 문자, 또는 일이 키를 가지고있는 경우 브래킷 표기법을합니다. 예 :
var dict = {};
// this obviously won't work
dict.some invalid key (for multiple reasons) = "value1";
// but this will
dict["some invalid key (for multiple reasons)"] = "value1";
키가 동적 인 경우 대괄호 표기법도 필요합니다.
dict[firstName + " " + lastName] = "some value";
키 (속성 이름)는 항상 문자열이며 키로 사용될 때 문자열이 아닌 값은 문자열로 강제 변환됩니다. 예를 들어 Date
객체는 문자열 표현으로 변환됩니다.
dict[new Date] = "today's value";
console.log(dict);
// => {
// "Sat Nov 04 2016 16:15:31 GMT-0700 (PDT)": "today's value"
// }
그러나 많은 객체가 "[object Object]"
고유하지 않은 키를 만들지 않는 것과 같은 문자열 표현을 갖기 때문에 반드시 “작동하는” 것은 아닙니다. 따라서 다음과 같은 것에주의하십시오.
var objA = { a: 23 },
objB = { b: 42 };
dict[objA] = "value for objA";
dict[objB] = "value for objB";
console.log(dict);
// => { "[object Object]": "value for objB" }
완전히 다르고 고유 한 요소 임에도 불구 objA
하고 objB
둘 다 동일한 기본 문자열 표현을 갖습니다 "[object Object]"
.
프로토 타입 에 기본 문자열 표현을 재정의 하는 사용자 지정 메서드 가 있기 때문에 Date
이러한 동작이 발생하지 않습니다 . 그리고 당신도 똑같이 할 수 있습니다 :Date
toString
// a simple constructor with a toString prototypal method
function Foo() {
this.myRandomNumber = Math.random() * 1000 | 0;
}
Foo.prototype.toString = function () {
return "Foo instance #" + this.myRandomNumber;
};
dict[new Foo] = "some value";
console.log(dict);
// => {
// "Foo instance #712": "some value"
// }
(위의 난수를 사용하기 때문에 이름 충돌은 여전히 매우 쉽게 발생할 수 있습니다. 구현은 단지 설명입니다 toString
.)
따라서 객체를 키로 사용하려고 할 때 JS는 객체 자체 toString
구현을 사용하거나 기본 문자열 표현을 사용합니다.
답변
var dict = {};
dict['key'] = "testing";
console.log(dict);
파이썬처럼 작동합니다 🙂
콘솔 출력 :
Object {key: "testing"}
답변
다음과 같이 간단합니다.
var blah = {}; // make a new dictionary (empty)
또는
var blah = {key: value, key2: value2}; // make a new dictionary with two pairs
그때
blah.key3 = value3; // add a new key/value pair
blah.key2; // returns value2
blah['key2']; // also returns value2
답변
사전 객체를 원한다고 말했기 때문에 (그리고 일부는 이해한다고 가정 하는 배열이 아닙니다 ) 나는 이것이 당신이 추구하는 것이라고 생각합니다.
var input = [{key:"key1", value:"value1"},{key:"key2", value:"value2"}];
var result = {};
for(var i = 0; i < input.length; i++)
{
result[input[i].key] = input[i].value;
}
console.log(result); // Just for testing
답변
JavaScript Object
는 그 자체가 사전과 같습니다. 바퀴를 재발 명할 필요가 없습니다.
var dict = {};
// Adding key-value -pairs
dict['key'] = 'value'; // Through indexer
dict.anotherKey = 'anotherValue'; // Through assignment
// Looping through
for (var item in dict) {
console.log('key:' + item + ' value:' + dict[item]);
// Output
// key:key value:value
// key:anotherKey value:anotherValue
}
// Non existent key
console.log(dict.notExist); // undefined
// Contains key?
if (dict.hasOwnProperty('key')) {
// Remove item
delete dict.key;
}
// Looping through
for (var item in dict) {
console.log('key:' + item + ' value:' + dict[item]);
// Output
// key:anotherKey value:anotherValue
}
답변
다음과 Map
같이 지도를 사용할 수 있습니다 .
var sayings = new Map();
sayings.set('dog', 'woof');
sayings.set('cat', 'meow');
답변
나는이 질문을 가로 질러 비슷한 것을 찾고있었습니다. 그것은 내가 원하는 대답을 얻기 위해 테스트를 실행하기에 충분한 정보를 주었다. 따라서 다른 사람이 JavaScript 객체에서 {key : ‘value’} 쌍을 동적으로 추가하거나 조회하는 방법을 알고 싶다면이 테스트를 통해 알아야 할 모든 내용을 알 수 있습니다.
var dictionary = {initialkey: 'initialValue'};
var key = 'something';
var key2 = 'somethingElse';
var value = 'value1';
var value2 = 'value2';
var keyInitial = 'initialkey';
console.log(dictionary[keyInitial]);
dictionary[key] =value;
dictionary[key2] = value2;
console.log(dictionary);
산출
initialValue
{ initialkey: 'initialValue',
something: 'value1',
somethingElse: 'value2' }