使用三元运算符一行使用 JAVASCRIPT REDUCE 构建 2 个数组的数组

假设我有一个对象数组


const companyList = [

    {

        name: 'amazon',

        isIntermediary: false

    },

    {

        name: 'microsoft',

        isIntermediary: false

    },

    {

        name: 'talentsearch',

        isIntermediary: true

    },

    {

        name: 'talent global',

        isIntermediary: true

    },

    {

        name: 'taleo',

        isIntermediary: true

    }

];

我想创建 2 个数组。我可以使用reduce


const companies = companyList.reduce(

    (acc, curr) => {

        if (!curr.isIntermediary) {

            acc[0].push(curr);

        } else {

            acc[1].push(curr);

        }

        return acc;

    },

    [[], []]

);

有没有办法重构此代码以改用三元运算符并使其成为单行代码?我正在努力这样做...感谢您的帮助!


慕桂英4014372
浏览 175回答 3
3回答

慕尼黑5688855

Boolean 转换为 Number 变为 0 或 1,可以使用逗号运算符将其缩短:const companyList = [ { name: 'amazon',        isIntermediary: false },                      { name: 'microsoft',     isIntermediary: false },                      { name: 'talentsearch',  isIntermediary: true  },                      { name: 'talent global', isIntermediary: true  },                      { name: 'taleo',         isIntermediary: true  } ]                      const companies = companyList.reduce((a, v) => (a[+v.isIntermediary].push(v), a), [[], []])console.log(companies)

喵喵时光机

它并不是最易读的单行,但我认为这正是您所要求的。const companyList = [{    name: 'amazon',    isIntermediary: false  },  {    name: 'microsoft',    isIntermediary: false  },  {    name: 'talentsearch',    isIntermediary: true  },  {    name: 'talent global',    isIntermediary: true  },  {    name: 'taleo',    isIntermediary: true  }];const companies = companyList.reduce((acc, c) => c.isIntermediary ? [acc[0], [...acc[1], c]] : [[...acc[0], c], acc[1]], [[], []]);console.log(companies)

慕妹3146593

通过您的代码,这就是您想要的(使用三元来选择是 index0还是1)const companyList = [    {        name: 'amazon',        isIntermediary: false    },    {        name: 'microsoft',        isIntermediary: false    },    {        name: 'talentsearch',        isIntermediary: true    },    {        name: 'talent global',        isIntermediary: true    },    {        name: 'taleo',        isIntermediary: true    }];const companies = companyList.reduce(    (acc, curr) => [!curr.isIntermediary ? [...acc[0], curr] : [...acc[0]], curr.isIntermediary ? [...acc[1], curr] : [...acc[1]]],    [[], []]);console.log(companies)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript