카테고리 없음
javascript key by value from array of object
한만큼
2019. 4. 25. 18:47
{"result":true,"code":200,"desc":"OK","data":[{"ko":"싱가폴","lang":"한국어"},{"ko":"싱가포르","lang":"한국어"},{"ko":"싱싱가폴","lang":"한국어"},{"ja":"シンガポール","lang":"일본어"},{"ja":"테스트","lang":"일본어"},{"en":"Singapore","lang":"영어"},{"lang":"프랑스어","fr":"Singapour"},{"lang":"스페인어","es":"Singapur"}]}
data 라는 array of object가 있음.
내가 원하는 것은 각각의 object에서 lang이라는 키를 가지는 value와 fr이든 es든 lang이 아닌 다른 키를 가지는 값의 value.
var tableData = data.data;
var itemsArray = tableData.map(function(item) {
var key = Object.keys(item)[0];
var value = Object.values(item)[0];
var keyLang = Object.keys(item).find(function(q){return /lang/gi.test(q)});
var valueLang = item[keyLang];
var keyNonLang = Object.keys(item).find(function(q){return /^((?!lang).)*$/gi.test(q)});
var valueNoneLang = item[keyNonLang];
var valueStr = JSON.stringify(value);
var valueString = value.replace(/'/gi, "\\\'");
var keyValueRegionCode = keyNonLang + "|" + valueNoneLang + "|" + regionCode;
return '<tr><td>' + valueLang + '('+ keyNonLang + ')' + '</td><td>' + valueNoneLang + '</td><td>' + '<a href="javascript:void(0);" onclick="deleteName(\'' + keyValueRegionCode + '\');">[ 삭제 ]</a>' + '</td></tr>';
});
일부러 다 var 로 작성.
정규표현식을 잘 몰라서 헤맸음.
처음 이 정규표현식을 써야했을때는 JSP에서 script안에 작성할때였는데 뭔가 조금 템플릿스트링도 그렇고 다른것같았음. \$ 이렇게 앞뒤로 써줘야 인식이 되었다...