반응형
JavaScript에서 객체 배열을 하나의 객체로 어떻게 변환합니까?
개체 배열이 있습니다.
[
{ key : '11', value : '1100', $$hashKey : '00X' },
{ key : '22', value : '2200', $$hashKey : '018' }
];
JavaScript로 어떻게 다음과 같이 변환합니까?
{
"11": "1000",
"22": "2200"
}
아마도 다음과 같은 것을 찾고있을 것입니다.
// original
var arr = [
{key : '11', value : '1100', $$hashKey : '00X' },
{key : '22', value : '2200', $$hashKey : '018' }
];
//convert
var result = {};
for (var i = 0; i < arr.length; i++) {
result[arr[i].key] = arr[i].value;
}
console.log(result);
작은 ES6 솔루션은 다음과 같습니다.
var arr = [{key:"11", value:"1100"},{key:"22", value:"2200"}];
var object = arr.reduce(
(obj, item) => Object.assign(obj, { [item.key]: item.value }), {});
console.log(object)
또한 개체 스프레드를 사용하면 다음과 같이 보일 수 있습니다.
var object = arr.reduce((obj, item) => ({...obj, {[item.key]: item.value}}) ,{});
99 % 더 빠른 또 다른 솔루션은 다음과 같습니다 (jsperf에서 테스트 됨).
var object = arr.reduce((obj, item) => (obj[item.key] = item.value, obj) ,{});
여기서 우리는 쉼표 연산자를 사용하여 쉼표 앞의 모든 표현식을 평가하고 마지막 쉼표 (마지막 쉼표 뒤)를 반환합니다. 따라서 obj
매번 복사하지 않고 새 속성을 할당합니다.
이 작업을 수행하는 기능적 접근 방식이 마음에 듭니다.
var arr = [{ key:"11", value:"1100" }, { key:"22", value:"2200" }];
var result = arr.reduce(function(obj,item){
obj[item.key] = item.value;
return obj;
}, {});
참고 : Last {}
는 obj
reduce 함수 의 초기 값 이며, 초기 값을 제공하지 않으면 첫 번째 arr
요소가 사용됩니다 (아마도 바람직하지 않음).
https://jsfiddle.net/GreQ/2xa078da/
해결하기 위해 노력 이 대답 에 나는 자바 스크립트에서 하나의 객체로 객체의 배열을 변환합니까 어떻게? ,
이렇게해야합니다.
var array = [
{key:'k1',value:'v1'},
{key:'k2',value:'v2'},
{key:'k3',value:'v3'}
];
var mapped = array .map(item => ({ [item.key]: item.value }) );
var newObj = Object.assign({}, ...mapped );
console.log(newObj );
짧막 한 농담:
var newObj = Object.assign({}, ...(array.map(item => ({ [item.key]: item.value }) )));
최신 JavaScript를 사용하여이를 수행하는 깨끗한 방법은 다음과 같습니다.
const array = [
{ name: "something", value: "something" },
{ name: "somethingElse", value: "something else" },
];
const newObject = Object.assign({}, ...array.map(item => ({ [item.name]: item.value })));
// >> { something: "something", somethingElse: "something else" }
lodash를 사용하십시오 !
const obj = _.keyBy(arrayOfObjects, 'keyName')
Object.fromEntries 사용 :
const array = [
{ key: "key1", value: "value1" },
{ key: "key2", value: "value2" },
];
const obj = Object.fromEntries(array.map(item => [item.key, item.value]));
console.log(obj);
Underscore.js 사용 :
var myArray = [
Object { key="11", value="1100", $$hashKey="00X"},
Object { key="22", value="2200", $$hashKey="018"}
];
var myObj = _.object(_.pluck(myArray, 'key'), _.pluck(myArray, 'value'));
여기 있습니다 :
var arr = [{ key: "11", value: "1100" }, { key: "22", value: "2200" }];
var result = {};
for (var i=0, len=arr.length; i < len; i++) {
result[arr[i].key] = arr[i].value;
}
console.log(result); // {11: "1000", 22: "2200"}
위의 내용을 문자열로 동적으로 받아들이고 객체에 보간하는 방법은 다음과 같습니다.
var stringObject = '[Object { key="11", value="1100", $$hashKey="00X"}, Object { key="22", value="2200", $$hashKey="018"}]';
function interpolateStringObject(stringObject) {
var jsObj = {};
var processedObj = stringObject.split("[Object { ");
processedObj = processedObj[1].split("},");
$.each(processedObj, function (i, v) {
jsObj[v.split("key=")[1].split(",")[0]] = v.split("value=")[1].split(",")[0].replace(/\"/g,'');
});
return jsObj
}
var t = interpolateStringObject(stringObject); //t is the object you want
// original
var arr = [{
key: '11',
value: '1100',
$$hashKey: '00X'
},
{
key: '22',
value: '2200',
$$hashKey: '018'
}
];
// My solution
var obj = {};
for (let i = 0; i < arr.length; i++) {
obj[arr[i].key] = arr[i].value;
}
console.log(obj)
이를 위해 mapKeys lodash 함수를 사용할 수 있습니다. 코드 한 줄만!
이 전체 코드 샘플을 참조하십시오 (복사하여 repl.it 또는 유사한 파일에 붙여 넣기).
import _ from 'lodash';
// or commonjs:
// const _ = require('lodash');
let a = [{ id: 23, title: 'meat' }, { id: 45, title: 'fish' }, { id: 71, title: 'fruit' }]
let b = _.mapKeys(a, 'id');
console.log(b);
// b:
// { '23': { id: 23, title: 'meat' },
// '45': { id: 45, title: 'fish' },
// '71': { id: 71, title: 'fruit' } }
var obj = [
{id: 1 , name : 'gaju' , class : 'kv'},
{id: 2 , name : 'tushar' , class : 'Super'}
];
function conv(obj,arg){
var temp= {};
var output= {}
for(key in obj){
temp[key] = obj[key];
};
var i=0;
for(key in temp){
var aa = {};
var value = temp[key][arg];
aa[value] = temp[i];
//console.log(aa[value][arg] );
output[aa[value][arg]]= aa[value];
i++;
}
console.log(output);
}
calling function
conv(obj,'class');
반응형
'Nice programing' 카테고리의 다른 글
목록이 주문되었는지 확인하는 방법은 무엇입니까? (0) | 2020.12.31 |
---|---|
Knockout JS 대신 Knockout MVC를 사용하는 이유가 있습니까? (0) | 2020.12.31 |
선택한 UItableViewCell이 선택되면 파란색으로 유지됨 (0) | 2020.12.31 |
신호 / 슬롯 메커니즘으로 발신자 위젯을 얻는 방법은 무엇입니까? (0) | 2020.12.31 |
Windows에서 "make"를 설치하고 사용하는 방법은 무엇입니까? (0) | 2020.12.31 |