[NODEJS] 객체로 변환 배열
NODEJS객체로 변환 배열
해결법
-
1.ECMAScript를 6 소개 쉽게 polyfillable Object.assign를 :
ECMAScript를 6 소개 쉽게 polyfillable Object.assign를 :
Object.assign({}, ['a','b','c']); // {0:"a", 1:"b", 2:"c"}
이 열거되지 않기 때문에 배열의 자신의 길이 속성은 복사되지 않습니다.
또한, 동일한 결과를 달성하기 위해 ES6 확산 구문을 사용할 수 있습니다 :
{ ...['a', 'b', 'c'] }
-
2.이 같은 기능으로 :
이 같은 기능으로 :
function toObject(arr) { var rv = {}; for (var i = 0; i < arr.length; ++i) rv[i] = arr[i]; return rv; }
귀하의 배열은 이미 다소간 단지 객체이지만, 배열은 정수 명명 된 속성에 대한 일부 "흥미로운"특별한 행동을해야합니까. 위의 당신에게 일반 객체를 제공 할 것입니다.
편집 오 또한 배열에서 "구멍"에 대한 계정에 할 수 있습니다 :
function toObject(arr) { var rv = {}; for (var i = 0; i < arr.length; ++i) if (arr[i] !== undefined) rv[i] = arr[i]; return rv; }
현대 자바 스크립트 런타임에서는 .reduce () 메소드를 사용할 수 있습니다 :
var obj = arr.reduce(function(acc, cur, i) { acc[i] = cur; return acc; }, {});
그의 .reduce ()가 어떻게 작동하는지 때문 하나는, 배열의 "구멍"을 피할 수 있습니다.
-
3.당신은 누적 일명 감소 사용할 수 있습니다.
당신은 누적 일명 감소 사용할 수 있습니다.
['a','b','c'].reduce(function(result, item, index, array) { result[index] = item; //a, b, c return result; }, {}) //watch out the empty {}, which is passed as "result"
시작 지점으로 빈 객체를 {} 통과; 다음 "오그"점진적으로 그 객체. { "A", "1", "B", "2", "C", "0"}을 반복의 끝에서, 그 결과가 될 것
당신의 배열은 키 - 값 쌍의 개체 집합 인 경우 :
[{ a: 1},{ b: 2},{ c: 3}].reduce(function(result, item) { var key = Object.keys(item)[0]; //first property: a, b, c result[key] = item[key]; return result; }, {});
생성한다 {A : 1, B 2, C : 3}
완벽을 위해, reduceRight는 역순으로 배열을 반복을 수행 할 수 있습니다 :
[{ a: 1},{ b: 2},{ c: 3}].reduceRight(/* same implementation as above */)
생성한다 {C : (3), B : (2), 1}
귀하의 축적은 특정 목적을위한 모든 유형이 될 수 있습니다. 키 배열과의 개체의 값을 교환하기 위해, 예를 들어, [] 건네
[{ a: 1},{ b: 2},{ c: 3}].reduce(function(result, item, index) { var key = Object.keys(item)[0]; //first property: a, b, c var value = item[key]; var obj = {}; obj[value] = key; result.push(obj); return result; }, []); //an empty array
생성 할 것이다 : {1 : "A"}, {2 'B'}, {3 : "C"}]
지도는 달리, 1-1 매핑으로 사용되지 않을 수 있습니다 줄일 수 있습니다. 당신은 당신이 포함하거나 제외 할 항목을 완벽하게 제어 할 수 있습니다. 따라서 감소는 필터 차종은 매우 다양한 줄일 수있는 무엇을 달성 할 수 있습니다 :
[{ a: 1},{ b: 2},{ c: 3}].reduce(function(result, item, index) { if(index !== 0) { //skip the first item result.push(item); } return result; }, []); //an empty array
생성한다 : [{2 'B'}, {3 : "C"}]
주의 : 줄이고 Object.key는 ECMA 5 판의 일부입니다; 당신은 그들 (특히 IE8)을 지원하지 않는 브라우저에 대한 polyfill을 제공해야합니다.
모질라하여 기본 구현을 참조하십시오.
-
4.당신이 jQuery를 사용하는 경우 :
당신이 jQuery를 사용하는 경우 :
$.extend({}, ['a', 'b', 'c']);
-
5.완전성을 위해서, ECMAScript를 2,015 (ES6)는 확산. transpiler (바벨) 또는 적어도 ES6 실행 환경 중 하나가 필요합니다.
완전성을 위해서, ECMAScript를 2,015 (ES6)는 확산. transpiler (바벨) 또는 적어도 ES6 실행 환경 중 하나가 필요합니다.
CONSOLE.LOG ( {... [ 'A', 'B', 'C']} )
-
6.(아주 드물게 나는 손에 underscorejs 라이브러리가없는되지 않을 것이기 때문에) 나는 아마이 방법을 써서 :
(아주 드물게 나는 손에 underscorejs 라이브러리가없는되지 않을 것이기 때문에) 나는 아마이 방법을 써서 :
var _ = require('underscore'); var a = [ 'a', 'b', 'c' ]; var obj = _.extend({}, a); console.log(obj); // prints { '0': 'a', '1': 'b', '2': 'c' }
-
7.보고되지 놀란 -
보고되지 놀란 -
CONSOLE.LOG ( Object.assign ({} [ 'A', 'B', 'C']) )
-
8.다음은 단지 완벽에 대한 O (1) ES2015 방법이다.
다음은 단지 완벽에 대한 O (1) ES2015 방법이다.
var arr = [1, 2, 3, 4, 5]; // array, already an object Object.setPrototypeOf(arr, Object.prototype); // now no longer an array, still an object
-
9.우리는 Object.assign를 사용하여 객체에 배열을 변환하는 기능을 array.reduce 수 있습니다. VAR 도착 = [{A : {B : 1}}, {C : D {2}}] VAR NEWOBJ arr.reduce = ((a, b) => Object.assign (a, b), {}) CONSOLE.LOG (NEWOBJ)
우리는 Object.assign를 사용하여 객체에 배열을 변환하는 기능을 array.reduce 수 있습니다. VAR 도착 = [{A : {B : 1}}, {C : D {2}}] VAR NEWOBJ arr.reduce = ((a, b) => Object.assign (a, b), {}) CONSOLE.LOG (NEWOBJ)
-
10.나는 그것이 ECMAScript를 2015 년 (ES6) 표준의 일부이기 때문에, 객체 확산 연산자를 사용하여 끝났다.
나는 그것이 ECMAScript를 2015 년 (ES6) 표준의 일부이기 때문에, 객체 확산 연산자를 사용하여 끝났다.
const array = ['a', 'b', 'c']; console.log({...array}); // it outputs {0:'a', 1:'b', 2:'c'}
예를 들어 다음과 같은 바이올린을했다.
-
11.
Object.assign({}, ['one', 'two']); // {0: 'one', 1: 'two'}
하나의 개체에서 다른 값 : 현대 자바 스크립트에서 쉬운 방법은 아무것도하지만, 복사 키를하지 않습니다 Object.assign ()를 사용하는 것입니다. 우리의 경우, 배열은 새에 속성을 기부 {}.
-
12.ES2016, 객체에 대한 확산 운영자하십시오. 참고 :이 ES6 후이며 transpiler 조정해야합니다 그래서.
ES2016, 객체에 대한 확산 운영자하십시오. 참고 :이 ES6 후이며 transpiler 조정해야합니다 그래서.
CONST 도착 = 'A', 'B'를 'C']; CONST OBJ 도착 = {...}; // -> {0 "은"1 "B", 2 : "C"}
-
13.5 년 후, 좋은 방법이있다 :
5 년 후, 좋은 방법이있다 :
Object.assign는 ECMAScript를 2015 년에 도입되었다.
Object.assign({}, ['a', 'b', 'c']) // {'0':'a', '1':'b', '2':'c'}
-
14.자바 스크립트 #의 foreach 문을 사용하여이 작업을 수행 할 수 있습니다
자바 스크립트 #의 foreach 문을 사용하여이 작업을 수행 할 수 있습니다
var result = {}, attributes = ['a', 'b','c']; attributes.forEach(function(prop,index) { result[index] = prop; });
ECMA6로 :
attributes.forEach((prop,index)=>result[index] = prop);
-
15.FWIW, 하나는 또 다른 최근의 접근 방식은 Object.entries 다음과 함께 새로운 Object.fromEntries을 사용하는 것입니다 :
FWIW, 하나는 또 다른 최근의 접근 방식은 Object.entries 다음과 함께 새로운 Object.fromEntries을 사용하는 것입니다 :
const arr = ['a','b','c']; arr[-2] = 'd'; arr.hello = 'e'; arr.length = 17; const obj = Object.fromEntries(Object.entries(arr));
... 비 인덱스 (예를 들면, 비 양성 정수 / 숫자가 아닌) 키 정의 또는 널 및 보존과 같은 기억 희소 배열 항목을 회피하기위한 허용한다.
(여기 @ 폴 드레이퍼의 Object.assign 대답과 동일 결과.)
하나는 포함되지 않는, 그러나 arr.length을 추가 할 수 있습니다 :
obj.length = arr.length;
-
16.당신은 확산 연산자를 사용할 수 있습니다
당신은 확산 연산자를 사용할 수 있습니다
x = [1,2,3,10] {...x} // {0:1, 1:2, 2:3, 3:10}
-
17.당신이 ES6를 사용하는 경우, 당신은 Object.assign 및 확산 연산자를 사용할 수 있습니다
당신이 ES6를 사용하는 경우, 당신은 Object.assign 및 확산 연산자를 사용할 수 있습니다
{ ...['a', 'b', 'c'] }
당신은 같은 중첩 된 배열이있는 경우
var arr=[[1,2,3,4]] Object.assign(...arr.map(d => ({[d[0]]: d[1]})))
-
18.신속하고 더러운 일 :
신속하고 더러운 일 :
var obj = {}, arr = ['a','b','c'], l = arr.length; while( l && (obj[--l] = arr.pop() ) ){};
-
19.신속하고 더러운 # 2 :
신속하고 더러운 # 2 :
var i = 0 , s = {} , a = ['A', 'B', 'C']; while( a[i] ) { s[i] = a[i++] };
-
20.Lodash 3.0.0의로서 당신은 _.toPlainObject을 사용할 수 있습니다
Lodash 3.0.0의로서 당신은 _.toPlainObject을 사용할 수 있습니다
VAR OBJ _ktoflanobjecht = ([ 'A', 'B', 'F']); Kansolklog OBJ (); <스크립트 SRC = "https : //로 chdnkjsdeliwrknet / LOD를 / 4kl6k4 / lodskmnkjs"> script>
-
21.여기에 그냥 쓴 재귀 함수입니다. 그것은 간단하고 잘 작동합니다.
여기에 그냥 쓴 재귀 함수입니다. 그것은 간단하고 잘 작동합니다.
// Convert array to object var convArrToObj = function(array){ var thisEleObj = new Object(); if(typeof array == "object"){ for(var i in array){ var thisEle = convArrToObj(array[i]); thisEleObj[i] = thisEle; } }else { thisEleObj = array; } return thisEleObj; }
여기에 예제 (jsFiddle는)입니다 :
var array = new Array(); array.a = 123; array.b = 234; array.c = 345; var array2 = new Array(); array2.a = 321; array2.b = 432; array2.c = 543; var array3 = new Array(); array3.a = 132; array3.b = 243; array3.c = 354; var array4 = new Array(); array4.a = 312; array4.b = 423; array4.c = 534; var array5 = new Array(); array5.a = 112; array5.b = 223; array5.c = 334; array.d = array2; array4.d = array5; array3.d = array4; array.e = array3; console.log(array); // Convert array to object var convArrToObj = function(array){ var thisEleObj = new Object(); if(typeof array == "object"){ for(var i in array){ var thisEle = convArrToObj(array[i]); thisEleObj[i] = thisEle; } }else { thisEleObj = array; } return thisEleObj; } console.log(convArrToObj(array));
결과 :
-
22.
.reduce((o,v,i)=>(o[i]=v,o), {})
[문서]
또는 더 자세한
var trAr2Obj = function (arr) {return arr.reduce((o,v,i)=>(o[i]=v,o), {});}
또는
var transposeAr2Obj = arr=>arr.reduce((o,v,i)=>(o[i]=v,o), {})
바닐라와 최단 하나 JS
JSON.stringify([["a", "X"], ["b", "Y"]].reduce((o,v,i)=>{return o[i]=v,o}, {})) => "{"0":["a","X"],"1":["b","Y"]}"
좀 더 복잡한 예제
[["a", "X"], ["b", "Y"]].reduce((o,v,i)=>{return o[v[0]]=v.slice(1)[0],o}, {}) => Object {a: "X", b: "Y"}
({; 리턴 E; CONSOLE.LOG (E)} === (E) => (CONSOLE.LOG (E), E) 함수 (E)를 사용하여)에도 짧은
nodejs > [[1, 2, 3], [3,4,5]].reduce((o,v,i)=>(o[v[0]]=v.slice(1),o), {}) { '1': [ 2, 3 ], '3': [ 4, 5 ] }
[/ 문서]
-
23.내가 Array.of으로이 간단 할 것 (). 의 배열 생성자로의 컨텍스트를 사용할 수있는 기능을 가지고있다.
내가 Array.of으로이 간단 할 것 (). 의 배열 생성자로의 컨텍스트를 사용할 수있는 기능을 가지고있다.
우리는 함수 () Array.of 결합과 같은 객체 배열을 생성 할 수 있도록.
더미 함수 () {}; VAR 꼬 = Array.of.apply (더미 [1,2,3,4]); CONSOLE.LOG (꼬);
Array.of을 이용하여 () 하나도 어레이 서브 클래스라는 할 수있다.
-
24.당신은지도 나 Object.assign를 사용할 수 있다면, 그것은 매우 간단합니다.
당신은지도 나 Object.assign를 사용할 수 있다면, 그것은 매우 간단합니다.
배열을 만듭니다
const languages = ['css', 'javascript', 'php', 'html'];
아래는 키와 인덱스 객체를 생성합니다 :
Object.assign({}, languages)
지도에서 위와 동일한 복제
인덱스 기반의 객체로 변환 {0 : 'CSS'} 등 ...
const indexMap = new Map(languages.map((name, i) => [i, name] )); indexMap.get(1) // javascript
값 기반의 객체로 변환 {CSS : 'CSS가 큰'} 등 ...
const valueMap = new Map(languages.map(name => [name, `${name} is great!`] )); valueMap.get('css') // css is great
-
25.빨리 객체에있는 항목의 배열을 변환하는 간단하고 건방진 방법
빨리 객체에있는 항목의 배열을 변환하는 간단하고 건방진 방법
function arrayToObject( srcArray ){ return JSON.parse( JSON.stringify( srcArray ) ); }
그리고 그렇게 좋아하여 ...
var p = [0,2,3,'pork','pie',6]; obj = new arrayToObject( p ); console.log( obj[3], obj[4] ) // expecting `pork pie`
산출:
pork pie
유형을 확인 :
typeof obj "object"
프로토 타입의 방법이 아닌 경우와 상황이 완전하지 않을 것이다
Array.prototype.toObject =function(){ return JSON.parse( JSON.stringify( this ) ); }
같은 사용 :
var q = [0,2,3,'cheese','whizz',6]; obj = q.toObject(); console.log( obj[3], obj[4] ) // expecting `cheese whizz`
산출:
cheese whizz
* 그래서 당신이 특정 이름을 갖고 싶어, 당신은 아래의 기존의 방법을 계속해야합니다 어떤 이름 루틴이없는 참고.
이전 방법
이것은 당신이 배열에서 당신은 당신이 그들을 원하는 순서 정의 키를 사용하여 객체를 생성 할 수 있습니다.
Array.prototype.toObject = function(keys){ var obj = {}; var tmp = this; // we want the original array intact. if(keys.length == this.length){ var c = this.length-1; while( c>=0 ){ obj[ keys[ c ] ] = tmp[c]; c--; } } return obj; }; result = ["cheese","paint",14,8].toObject([0,"onion",4,99]);
CONSOLE.LOG ( ">>>"+ result.onion); 출력됩니다 "페인트"함수는 동일한 길이의 배열을 가지고 있어야하거나 빈 개체를 가져옵니다.
여기서 업데이트 방법은
Array.prototype.toObject = function(keys){ var obj = {}; if( keys.length == this.length) while( keys.length ) obj[ keys.pop() ] = this[ keys.length ]; return obj; };
-
26.내가 = 0하자; 하자에서 myArray = "첫 번째", "두 번째", "세 번째", "제"]; CONST arrayToObject = (도착) => Object.assign ({}, ... arr.map (항목 => ({[I ++] 항목}))); CONSOLE.LOG (arrayToObject (myArray의));
내가 = 0하자; 하자에서 myArray = "첫 번째", "두 번째", "세 번째", "제"]; CONST arrayToObject = (도착) => Object.assign ({}, ... arr.map (항목 => ({[I ++] 항목}))); CONSOLE.LOG (arrayToObject (myArray의));
또는 사용
에서 myArray = "첫 번째", "두 번째", "세 번째", "제"] CONSOLE.LOG ({...에서 myArray})
-
27.ES5 - 솔루션 :
ES5 - 솔루션 :
배열 프로토 타입 기능 '푸시'를 사용하고 배열 요소와 객체를 채울 수 있습니다 '적용'.
VAR 도착 = 'A', 'B', 'C']; VAR OBJ = 새 개체 (); Array.prototype.push.apply (OBJ, 도착); CONSOLE.LOG (OBJ); {// '0': 'A', '1': 'B', '2': 'C', 길이 : 3} CONSOLE.LOG (OBJ [2]); // 씨
-
28.더 많은 브라우저가 지원하고 그 일을 더 유연한 방법처럼 뭔가를 정상 루프를 사용하고 있습니다 :
더 많은 브라우저가 지원하고 그 일을 더 유연한 방법처럼 뭔가를 정상 루프를 사용하고 있습니다 :
const arr = ['a', 'b', 'c'], obj = {}; for (let i=0; i<arr.length; i++) { obj[i] = arr[i]; }
뿐만 아니라 현대적인 방법처럼, 확산 연산자를 사용 할 수 있습니다 :
{...arr}
또는 개체 할당 :
Object.assign({}, ['a', 'b', 'c']);
모두 반환합니다 :
{0: "a", 1: "b", 2: "c"}
-
29.이 같은 기능을 사용할 수 있습니다 :
이 같은 기능을 사용할 수 있습니다 :
var toObject = function(array) { var o = {}; for (var property in array) { if (String(property >>> 0) == property && property >>> 0 != 0xffffffff) { o[i] = array[i]; } } return o; };
이 사람은보다 효율적으로 스파 스 배열을 처리해야합니다.
-
30.여기에 커피 스크립트의 솔루션입니다
여기에 커피 스크립트의 솔루션입니다
arrayToObj = (arr) -> obj = {} for v,i in arr obj[i] = v if v? obj
from https://stackoverflow.com/questions/4215737/convert-array-to-object by cc-by-sa and MIT license
'NODEJS' 카테고리의 다른 글
[NODEJS] 어떻게 Node.js를 시작합니까 [마감] (0) | 2020.09.16 |
---|---|
[NODEJS] 디렉토리 변경 명령 CD는 ..not 설치 NPM 후 배치 파일에서 작업 (0) | 2020.09.16 |
[NODEJS] 어떻게 JSON과 같은 형식으로 원형 구조를 인쇄 할 수 있습니까? (0) | 2020.09.15 |
[NODEJS] Node.js를 파일을 작성 (0) | 2020.09.15 |
[NODEJS] 노드에서 클라이언트 : catch되지 않은 ReferenceError가 : 정의되지 않은 필요 (0) | 2020.09.15 |