2014-10-29 1 views
3

다음 객체가 있습니다.JavaScript 객체 키의 대소 문자 변경

var obj = [{ 
    Address1: "dd", 
    Address2: "qww", 
    BankAccNo: "44", 
    BankBranchCode: "44", 
    BloodGrp: "A+" 
}, 
{ 
    Address1: "dd", 
    Address2: "qww", 
    BankAccNo: "44", 
    BankBranchCode: "44", 
    BloodGrp: "A+" 
}]; 

어떻게 모든 키를 대문자로 만들 수 있습니까?

나는 다음과 같은 값에 액세스 할 수있게하려면 : - (for in와) 객체의 모든 속성을 통해 obj[0].ADDRESS1

+1

은 왜 그냥 그들에 액세스? – nnnnnn

+0

@nnnnnn 어쩌면 일부 DB 이름 필드와의 일관성 때문에 추측 –

+0

예 ...이 키를 대문자 인 DB에 저장된 값과 일치시킵니다. – Anup

답변

6
obj = obj.map(function(item){ 
    for(var key in item){ 
     var upper = key.toUpperCase(); 
     // check if it already wasn't uppercase 
     if(upper !== key){ 
      item[ upper ] = item[key]; 
      delete item[key]; 
     } 
    } 
    return item; 
}); 

http://jsfiddle.net/07xortqy/

+0

키가 이미 대문자 인 경우에는 작동하지 않습니다. 그리고 모든 브라우저에서 어떻게 작동할지는 모르겠다. 왜냐하면 객체를 변경하는 동안 'for in' @ –

+0

@SebastienC을 사용하여 루프를 돌린다. 덕분에 기존의 대문자 키에 대한 보호 장치가 추가되었습니다. – pawel

5
  1. 루프를
  2. 사용 .toUpperCase() 속성 이름
  3. 의 대문자 버전을 얻을
  4. 대문자 버전
  5. delete 원래 속성에서 원래 속성을 값을 복사
+0

당신은 파벨의 대답을 멋지게 완성합니다. –

-2

그냥 루프를 돌리고 새 항목을 추가 할 수 있습니까? 있는 그대로

for (index in obj) { 
    for (key in obj[index]) { 
    obj[index][key.toUpperCase()] = obj[key]; 
    } 
} 
+0

'for..in'을 사용하여 배열을 반복적으로 조사합니다. 이제는 OP가 원하는 것일 수도 있고 아닐 수도있는 대문자와 소문자 키가 모두 있습니다. – pawel

0
$.each(obj, function(i, parent) { 
    $.each(parent, function(key, record) { 
    parent[ key.toUpperCase() ] = record[key]; //rename key 
    delete parent[key]; //delete old key 
    }); 
}); 
+0

답변에 설명을 추가하십시오. 코드 라인만으로는 좋은 대답이 아닙니다. – user1803551

+0

첫 번째 반복 배열 다음 키를 반복, 두 번째 루프 이름 바꾸기 키 내부 및 이전 하나를 삭제하십시오. –

+1

의견을 추가하는 대신 질문을 수정하십시오. – user1803551

0
let obj = [ 
{ Address1: "dd",Address2: 'qww',BankAccNo: 44,BankBranchCode: 44,BloodGrp: 'A+' }, 
{ Address1: "dd",Address2: 'qww',BankAccNo: 44,BankBranchCode: 44,BloodGrp: 'A+' } 
]; 

const uppercaseKeys = (elem) => { 
    let newObject = {} 

    Object.keys(elem).reduce((acc, key, allKeys) => { 
    acc[key.toUpperCase()] = elem[key] 
    delete elem[key] 
    return acc 
    }, elem) 

    return newObject 
} 

obj.forEach(o => uppercaseKeys) 
console.log(obj)