亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何提取值并創建一個新對象,如下所示

如何提取值并創建一個新對象,如下所示

明月笑刀無情 2022-12-22 14:29:14
我擁有的對象如下:const tagA = {  color: ['red', 'green'],  type: { a: 10, b:7}...};const tagB = {  color: ['blue', 'red'],  type: { b:54, z:10} .... };const tagC = {  color: ['red', 'green', 'yellow'],  type: { a: 13, b:17}...};我希望能夠創建一個如下所示的新對象:const colorFilter = {   red: ['tagA', 'tagC'],   green: ['tagA', 'tagC'],   blue: ['tagB'],   yellow: ['tagC']};
查看完整描述

3 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

const tagA = {color: ['red', 'green'],type: {a: 10,b: 7}}

const tagB = {color: ['blue', 'red'],type: {b: 54,z: 10}}

const tagC = {color: ['red', 'green', 'yellow'],type: {a: 13,b: 17}}

const tags = [tagA,tagB,tagC]

let colors = []

tags.forEach(t=>t.color.forEach(c=>colors.push(c)))

colors = colors.filter((c,i)=>colors.indexOf(c)===i)

let Color = {}

colors.forEach(c=>Color[c]=tags.filter(t=>t.color.includes(c)))

console.log(Color)


查看完整回答
反對 回復 2022-12-22
?
森林海

TA貢獻2011條經驗 獲得超2個贊

你可以有像下面這樣的功能getColorFilter。詳細了解Object.entries()flatMapreduce

注意您需要傳遞objectgetColorFilter({ tagA, tagB, tagC });. 或者您可以創建新對象let obj = { tagA, tagB, tagC };,例如getColorFilter(obj);

function getColorFilter(tags) {

  return Object.entries(tags)

    .flatMap(([key, val]) => val.color.map(c => ({ tag: key, color: c })))

    .reduce((acc, x) => {

      acc[x.color] = acc[x.color] || [];

      acc[x.color].push(x.tag);

      return acc;

    }, {})

}


const tagA = {

  color: ['red', 'green']

};

const tagB = {

  color: ['blue', 'red']

};

const tagC = {

  color: ['red', 'green', 'yellow']

};


const colorFilter = getColorFilter({ tagA, tagB, tagC });

console.log(colorFilter);


查看完整回答
反對 回復 2022-12-22
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

const tagA = {

  color: ['red', 'green'],

  type: {

    a: 10,

    b: 7

  }

};

const tagB = {

  color: ['blue', 'red'],

  type: {

    b: 54,

    z: 10

  }

};

const tagC = {

  color: ['red', 'green', 'yellow'],

  type: {

    a: 13,

    b: 17

  }

};

const tags = {

  tagA: tagA,

  tagB: tagB,

  tagC: tagC

};

let tagsTest = Object.keys(tags);

let colorFilter = {};

tagsTest.forEach(t => {

  tags[t].color.forEach(l => {

    if (colorFilter.hasOwnProperty(l)) {

      colorFilter[l].push(t);

      }

    else {

        colorFilter[l] = [t];

        }

    }

  )

});

console.log(colorFilter);




    const tagA = {

      color: ['red', 'green'],

      type: {

        a: 10,

        b: 7

      }

    };

    const tagB = {

      color: ['blue', 'red'],

      type: {

        b: 54,

        z: 10

      }

    };

    const tagC = {

      color: ['red', 'green', 'yellow'],

      type: {

        a: 13,

        b: 17

      }

    };

    const tags = {

      tagA: tagA,

      tagB: tagB,

      tagC: tagC

    };

    let tagsTest = Object.keys(tags);

    let colorFilter = {};

    tagsTest.forEach(t => {

      tags[t].color.forEach(l => {

        if (colorFilter.hasOwnProperty(l)) {

          colorFilter[l].push(t);

          }

        else {

            colorFilter[l] = [t];

            }

        }

      )

    });

    console.log(colorFilter);

 Run code snippetHide resultsExpand snippet



我想我能夠通過上述方法解決它。如果有更簡單的方法請告訴我。


查看完整回答
反對 回復 2022-12-22
  • 3 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號