카테고리 없음

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안에 작성할때였는데 뭔가 조금 템플릿스트링도 그렇고 다른것같았음. \$ 이렇게 앞뒤로 써줘야 인식이 되었다...