홈>
아래에 배열의 객체가 있고 키와 값으로 필터링하고 싶습니다
var arrayObj = [{name:'ram',lastname:'jha',address:{fistLine:'100 ft raod',street:'kfc'},mobileNumber:12345745},
{name:'rakesh',lastname:'jha',address:{fistLine:'200 ft raod',street:'pizza hut'},mobileNumber:12345746},
{name:'pankaj',lastname:'jha',address:{fistLine:'300 ft raod',street:'abc line'},mobileNumber:12345747}];
아래와 같이 출력을 원합니다 :
let newarrayObj:[['name','lastname', 'address.fistLine','address.street','mobileNumber'],
['ram','jha','100 ft raod','kfc','12345745'],
['rakesh','jha','200 ft raod','pizza hut','12345746'],
['pankaj','jha','300 ft raod','abc line','12345747']]
- 답변 # 1
- 답변 # 2
Object.keys (), Object.values () 및 flat ()과 함께 map ()을 사용할 수 있습니다.
const flatKeys = object => Object.entries(object).reduce((keys, [key, value]) => { if (typeof value === 'object') { // && value !== null if needed flatKeys(value).forEach(subKey => keys.push(key + '.' + subKey)) } else { keys.push(key) } return keys }, []) const flatValues = object => Object.values(object).reduce((values, value) => { if (typeof value === 'object') { // && value !== null if needed flatValues(value).forEach(subValue => values.push(subValue)) } else { values.push(value) } return values }, []) const arrayObj = [ { name: 'ram', lastname:'jha', address: { fistLine:'100 ft raod', street: 'kfc' }, mobileNumber: 12345745 }, { name: 'rakesh', lastname:'jha', address: { fistLine:'200 ft raod', street: 'pizza hut' }, mobileNumber: 12345746 }, { name: 'pankaj', lastname:'jha', address: { fistLine:'300 ft raod', street: 'abc line' }, mobileNumber: 12345747 } ] const newarrayObj = [flatKeys(arrayObj[0]), ...arrayObj.map(flatValues)] console.log(newarrayObj)
- 답변 # 3
아래 솔루션은 최대 2 단계까지 작동합니다. 더 깊으면 재귀 접근 방식을 사용해야합니다. 현재 위치는 값이 내부 루프를 생성하는 객체인지 확인한 다음 객체를 필요한 형식으로 줄입니다.
var arrayObj = [{ name: 'ram', lastname: 'jha', address: { firstLine: '100 ft raod', street: 'kfc' }, mobileNumber: 12345745 }, { name: 'rakesh', lastname: 'jha', address: { fistLine: '200 ft raod', street: 'pizza hut' }, mobileNumber: 12345746 }, { name: 'pankaj', lastname: 'jha', address: { fistLine: '300 ft raod', street: 'abc line' }, mobileNumber: 12345747 } ]; var keys = Object.entries(arrayObj[0]).map(([key, value]) => { if (typeof value === 'object') { return Object.keys(value).map(subKey => key + '.' + subKey); } else { return key; } }).flat(); var values = arrayObj.map(item => Object.values(item).map(value => typeof value === 'object' ? Object.values(value) : value ).flat() ); var result = [keys].concat(values); console.log(result);
var arrayObj = [{name:'ram',lastname:'jha',address:{fistLine:'100 ft raod',street:'kfc'},mobileNumber:12345745}, {name:'rakesh',lastname:'jha',address:{fistLine:'200 ft raod',street:'pizza hut'},mobileNumber:12345746}, {name:'pankaj',lastname:'jha',address:{fistLine:'300 ft raod',street:'abc line'},mobileNumber:12345747}]; let newArrayObj = arrayObj.reduce((acc,obj,i) => { if(!acc[0]) acc[0]=[]; acc[i+1]=[]; Object.entries(obj).forEach(([key,value]) => { if(value && typeof value!= 'object' && !acc[0].includes(key)) { acc[0].push(key); acc[i+1].push(value); } else if (value && typeof value === 'object') { Object.entries(value).forEach(([k,v]) => { let val = key+'.'+k; if(!acc[0].includes(val)) acc[0].push(val); acc[i+1].push(v); }); } }); return acc; },[]) console.log(newArrayObj);
관련 자료
- javascript - 포함을 배열 값과 함께 사용하여 배열 필터링
- python - 오름차순 값을 기준으로 목록을 필터링하는 방법은 무엇입니까?
- 다른 배열의 값을 기반으로 배열을 만드는 방법 Python Numpy
- typescript - rest 매개 변수에서 매핑 된 유형이있는 값이있는 배열 반환
- javascript - 마지막 항목을 전달할 때 첫 번째 항목에 대한 자동 루프를 사용하여 배열에 마지막 N 값을 저장하는 방법은 무엇입니까?
- reactjs - typescript - 값이 있거나 비어있는 배열/튜플 입력
- list - Python 배열에서 값 계산
- VBA에서 배열의 값을 자르는 방법은 무엇입니까?
- javascript - 요소와 조건을 일치시키기 위해 Set 및 개체를 사용하여 필터 배열 함수 개선
- PHP 한 배열에서 다른 배열의 값으로 존재하는 키를 찾고 값을 다시 가져옵니다
- javascript - 다른 배열 필터 내에서 필터링하는 방법은 무엇입니까?
- join - 다른 데이터 프레임의 열 값을 기반으로 pyspark 데이터 프레임에서 행을 필터링하는 방법
- javascript - 중첩 배열이있는 요소의 배열을 필터링하는 방법은 무엇입니까?
- javascript - 키 배열 및 값 배열에서 객체 생성
- 배열의 항목을 Spark의 다른 값으로 바꾸는 방법은 무엇입니까?
- javascript - 품질/길이로 그룹화 된 동일한 값을 가진 객체의 새 배열을 반환합니다
- javascript - 클릭시 필터 배열로 제품 배열 필터링 시도
- php - sql - 다른 값과 일치하는 값 배열 만들기
- javascript - 배열 값으로 배열 객체 필터링
- Swift의 함수를 통해 사용자 지정 구조체 배열 필터링
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
와이즈 비즈 가정 항목이 1 개 이상인 경우 개체의 깊이에 관계없이 다음을 수행 할 수 있습니다.