reduce 배열 조합 실현

1371 단어
이전에 배열 조합 이 필요 한 다음 에 이 링크 를 참고 한 후에 js 의 고급 함수 reduce 로 부정 확 한 2 차원 배열 조합 문 제 를 해결 하 는 것 을 발견 했다.
var data = {
  color: ['color1', 'color2', 'color3'],
  size: ['size1', 'size2', 'size3'],
  style: ['style1', 'style2', 'style3']
}

Object.values(data).reduce( (result, property) => {
    return property.reduce( (acc, value) => {
        return acc.concat(result.map( ele => [].concat(ele, value)));
    }, []);
});
//   
var data = {
            color: ['color1', 'color2', 'color3'],
            size: ['size1', 'size2', 'size3'],
            style: ['style1', 'style2', 'style3']
        }
//          
Object.keys(data).reduce( (result, key) => {

        //          
        return data[key].reduce( (acc, value) => {

            //        
            if (!result.length) {
                //           
                return acc.concat({ [key]: value });
            }

            //           ,              ,     。
            return acc.concat( result.map( ele => (Object.assign({}, ele, { [key]: value }) )));
        }, []);
    }, []);

//   

2 층 순환 에 해당 하 다
Object. values Object. keys Array. prototype. reduce 에 대하 여

좋은 웹페이지 즐겨찾기