JS 수조에서 같은 대상의 속성 값 분류 방법에 대한 생각
우선:
이런 수조가 있어요.
const arr = [
{1:'1',color:' '},
{2:'2',color:' '},
{3:'3',color:' '},
{4:'4',color:' '},
{5:'5',color:' '},
{6:'6',color:' '},
{7:'7',color:' '},
{8:'8',color:' '},
{9:'9',color:' '},
{10:'10',size:'mini',color:' '},
]
해결 방법:
function formateData(data){
let Arr = []
let obj = arr.reduce((ret,next) => {
if(ret.color === next.color) {
Object.assign(ret,next)
}else{
Arr.push(ret)
ret = next
}
if(next === data[data.length-1]){
Arr.push(ret)
}
return ret
},arr[0])
return Arr
}
반환 값:
[ { '1': '1', '2': '2', '3': '3', '4': '4', '5': '5', color: ' ' },
{ '6': '6','7': '7','8': '8','9': '9','10': '10',color: ' ',size: 'mini' } ]
그렇지만
이런 그룹에 대해서.
const arr = [
{1:'1',color:' '},
{2:'2',color:' '},
{3:'3',color:' '},
{4:'4',color:' '},
{5:'5',color:' '},
{6:'6',color:' '},
{7:'7',color:' '},
{8:'8',color:' '},
{9:'9',color:' '},
{10:'10',size:'mini',color:' '},
]
반환 값은 다음과 같습니다.
[ { '1': '1', color: ' ' },
{ '2': '2', color: ' ' },
{ '3': '3', color: ' ' },
{ '4': '4', color: ' ' },
{ '5': '5', color: ' ' },
{ '6': '6', color: ' ' },
{ '7': '7', color: ' ' },
{ '8': '8', color: ' ' },
{ '9': '9', color: ' ' },
{ '10': '10', size: 'mini', color: ' ' } ]
이것은 분명히 수요에 부합되지 않기 때문에 이런 방법은 취할 수 없다
그래서 우리는 이렇게 한다.
function formateData(data){
let obj = {} //
let Arr = [] //
data.forEach(item => {
let key = Object.keys(item)
key.forEach((el,index) => {
!obj[item.color] && (obj[item.color] = {}) // ,
obj[item.color][el] = item[el] // color
})
})
// , push Arrr
Object.values(obj).forEach(item => {
Arr.push(item)
})
return Arr
}
반환 값:
[ { '1': '1', '3': '3', '5': '5', '7': '7', '9': '9', color: ' ' },
{ '2': '2','4': '4','6': '6','8': '8','10': '10',color: ' ',size: 'mini' } ]
이렇게 하면 우리의 요구를 만족시킬 수 있다
캡슐화:
/**
:
data:
name:
*/
function formateData(data,name){
//
if(!name && typeof data !== Array && typeof name !== String){
return
}
let obj = {} //
let Arr = [] //
data.forEach(item => {
let key = Object.keys(item)
key.forEach((el,index) => {
!obj[item[name]] && (obj[item[name]] = {}) // ,
obj[item[name]][el] = item[el] // color
})
})
// , push Arrr
Object.values(obj).forEach(item => {
Arr.push(item)
})
return Arr
}
마지막으로 앞에 있는arr수조에 대해 우리는 이렇게 호출할 수 있다.
formateData(arr,'color')
이미 분류된 새로운 수조를 되돌려줄 수 있다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.