숫자 유형을 객체 키로 사용하는 방법이 있습니까?
객체의 키 이름으로 숫자 유형을 사용하면 항상 문자열로 변환되는 것 같습니다. 어쨌든 실제로 숫자로 저장할 수 있습니까? 정상적인 타입 캐스팅이 작동하지 않는 것 같습니다.
예:
var userId = 1;
console.log( typeof userId ); // number
myObject[userId] = 'a value';
console.dir(myObject);
Dir 출력 :
{
'1': 'a value'
}
내가 원하는 것은 다음과 같습니다.
{
1: 'a value'
}
조언?
감사
아니요, 불가능합니다. 키는 항상 문자열로 변환됩니다. 참조 속성 접근 자 문서를
속성 이름은 문자열이어야합니다. 즉, 문자열이 아닌 개체는 개체에서 키로 사용할 수 없습니다. 숫자를 포함한 문자열이 아닌 객체는 toString 메소드를 통해 문자열로 형변환됩니다.
> var foo = {}
undefined
> foo[23213] = 'swag'
'swag'
> foo
{ '23213': 'swag' }
> typeof(Object.keys(foo)[0])
'string'
개체에서는 아니요,하지만 이 응용 프로그램에 Map이 매우 유용하다는 것을 알았습니다 . 여기에서 키 기반 이벤트 인 숫자 키에 사용했습니다.
onKeydown(e) {
const { toggleSidebar, next, previous } = this.props;
const keyMapping = new Map([
[ 83, toggleSidebar ], // user presses the s button
[ 37, next ], // user presses the right arrow
[ 39, previous ] // user presses the left arrow
]);
if (keyMapping.has(e.which)) {
e.preventDefault();
keyMapping.get(e.which)();
}
}
ECMA-262-5에서 의도적으로 설계된 것처럼 보입니다.
속성 식별자 유형은 속성 이름을 속성 설명자와 연결하는 데 사용됩니다. 속성 식별자 유형의 값은 형식 (이름, 설명자)의 쌍입니다. 여기서 이름은 문자열이고 설명자는 속성 설명자 값입니다.
그러나 ECMA-262-3에는 이에 대한 명확한 사양이 없습니다. 그럼에도 불구하고 나는 속성 이름으로 문자열이 아닌 것을 사용하지 않을 것입니다.
이런 게 필요한가요?
var userId = 1;var myObject ={};
console.log( typeof userId ); // number
myObject[userId] = 'a value';
console.dir(myObject);
콘솔 : 개체
1 : "값"
위의 것을 숫자처럼 접근하기 위해 사용하고 싶다면 다음과 같이 할 수 있다고 생각합니다.
var myObj = {"0":"a","1":"b","CNT":2};
$.each(myObj,function(key,value){
if(isNaN(parseInt(key))){
return true; //continue;
}
//Code to perform operation
}
This works only when the key doesn't start with and numeric character otherwise it'll be converted to a number. See the following example:
parseInt("45kjghk") === 45
I used jQuery here
Updated:
var myObj = {"0":"a","1":"b","CNT":2};
$.each(myObj,function(key,value){
if(isNaN(parseInt(key)) || (key.length !== parseInt(key).toString().length) ){
return true; //continue;
}
//Code to perform operation
}
It may overcome the above problem. Please suggest better if available and problem with this answer if there are.
In JavaScript, numerical strings and numbers are interchangeable, so
myObject[1] == myObject['1']
If you really want number to be the key for an object, you might want an array (i.e. created with new Array()
or []
).
참고URL : https://stackoverflow.com/questions/3633362/is-there-any-way-to-use-a-numeric-type-as-an-object-key
'developer tip' 카테고리의 다른 글
ASP.NET 캐시 추가 대 삽입 (0) | 2020.11.05 |
---|---|
Cypress : 요소가 존재하지 않는지 테스트 (0) | 2020.11.05 |
C #이 두 개의 int 배열 구문에서 다르게 작동하는 이유 (0) | 2020.11.05 |
대체 사전을 사용하여 문자열을 대체하는 가장 쉬운 방법은 무엇입니까? (0) | 2020.11.04 |
Python 스크립트 중간에있는 모든 변수를 지우려면 어떻게해야합니까? (0) | 2020.11.04 |