JAVASCRIPT
VUE
REACT
NODE
ES6
TYPESCRIPT

数组或者数组对象中的最大值和最小值

2023. 05. 17    

数组或者数组对象中的最大值和最小值

找出数组或者数组对象中的最大值和最小值,并对其添加class

<script>
    let s = 1;
    let a = [1,1,'',1]
    let a2 = [1,1,1,8]
    let a3 = [{val:1,name:'sdfdf'},{val:1,name:'sdfdf'},{val:1,name:'sdfdf'},{val:1,name:'sdfdf'},{val:8,name:'sdfdf'}]
    let a4 = [{val:1,val2:3,name:'sdfdf'},{val:1,name:'sdfdf'},{val:1,val2:5,name:'sdfdf'},{val:1,val2:3,name:'sdfdf'},{val:8,val2:3,name:'sdfdf'}]
    function determineMinAndMax(list,name){
        let item = '';
        if(name){
            item = list[0]&&list[0][name]||0;
        }else{
            item = list[0];
        }
        let statue = false;
        let newList = [];
        // 判断是不是全部相等
        for (let index = 0; index < list.length; index++) {
            let element = '';
            if(name){
                element = list[index][name];
            }else{
                element = list[index];
            }
            if(element&&element!=item){
                statue = true;//不相等
                break;
            }
        }
        if(statue){
            let maxNum = '',minNum='';
            let tumpList = []
            list.map(ssItem=>{
                if(name){
                    if(ssItem[name]){
                        tumpList.push(ssItem) 
                    }
                }else{
                    if(ssItem){
                        tumpList.push(ssItem) 
                    }
                }
            })
            if(name){
                maxNum = Math.max(...tumpList.map(sitem=>sitem[name]));
                minNum = Math.min(...tumpList.map(sitem=>sitem[name]));
            }else{
                maxNum = Math.max(...tumpList);
                minNum = Math.min(...tumpList);
            }
            list.map(sitem=>{
                let obj = '';
                if(name){
                    obj = sitem;
                    if(maxNum==sitem[name]){obj[name+'Col'] = 'max'};
                    if(minNum==sitem[name]){obj[name+'Col'] = 'min'};
                }else{
                    obj = {
                        value: sitem,
                        col:'',
                    }
                    if(maxNum==sitem){obj.col = 'max'};
                    if(minNum==sitem){obj.col = 'min'};
                }
                newList.push(obj);
            })
        }else{
            list.map(sitem=>{
                let obj = {
                    value: sitem,
                    col:'',
                }
                newList.push(obj)
            })
        }
        return newList;
    }
    // console.log(determineMinAndMax(a))
    // console.log(determineMinAndMax(a2))
    // console.log(determineMinAndMax(a3,'val'))
    console.log(determineMinAndMax(a4,'val'))
    console.log(determineMinAndMax(a4,'val2'))
</script>