【问题标题】:Fill model value from an object.从对象填充模型值。
【发布时间】:2019-02-28 21:29:22
【问题描述】:

我正在尝试创建一个函数,它接收一个数组和一个对象,并像这样返回两者的组合。

fruits: [
  {
    name: apple,
    seeds: ''
  },
  {
    name: grape,
    seeds: ''
  },
  { name: banana,
    seeds: ''
  },
]

const seedData = {
  apple: 'yes',
  banana: 'yes',
  grape: 'no',
}

setSeedData = (fruits, seedData) => {
  return completedFruits
}

想要的结果是这样的:

fruits: [
  {
    name: apple,
    seeds: 'yes'
  },
  {
    name: grape,
    seeds: 'yes'
  },
  { 
    name: banana,
    seeds: 'no'
  },
]

我的问题是:如何创建函数 setSeedData?返回的 de 数组应该替换当前的 fruits 数组。

【问题讨论】:

    标签: javascript arrays json reactjs loops


    【解决方案1】:

    您可以使用.forEach() 来遍历数组并添加属性:

    const fruits = [
      {name: 'apple', seeds: ''},
      {name: 'grape', seeds: ''},
      {name: 'banana', seeds: ''}
    ];
    
    const seedData = {
      apple: 'yes',
      banana: 'yes',
      grape: 'no'
    };
    
    const setSeedData = (arr, obj) => (arr.forEach((o) => (o.seeds = obj[o.name])), arr);
    
    console.log(setSeedData(fruits, seedData));
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      【解决方案2】:

      您基本上可以映射数组并返回更新后的数据

      const fruits= [
        {
          name: 'apple',
          seeds: ''
        },
        {
          name: 'grape',
          seeds: ''
        },
        { name: 'banana',
          seeds: ''
        },
      ]
      
      const seedData = {
        apple: 'yes',
        banana: 'yes',
        grape: 'no',
      }
      
      setSeedData = (fruits, seedData) => {
        return fruits.map(fruit=> ({...fruit, seeds: seedData[fruit.name]}));
      }
      
      console.log(setSeedData(fruits, seedData));

      【讨论】:

      • 谢谢真的帮了我!
      【解决方案3】:

      您可以映射fruits,并通过使用name 键值fruits 查找seedData 对象来更新seeds 键。

      const fruits = [
        {
          name: 'apple',
          seeds: ''
        },
        {
          name: 'grape',
          seeds: ''
        },
        { name: 'banana',
          seeds: ''
        },
      ];
      
      const seedData = {
        apple: 'yes',
        banana: 'yes',
        grape: 'no',
      }
      
      setSeedData = (fruits, seedData) => {
        return fruits.map(fruit => {
          return {...fruit, seeds: seedData[fruit.name]}
        })
      }
      
      console.log(setSeedData(fruits, seedData))

      【讨论】:

        猜你喜欢
        • 2013-10-04
        • 1970-01-01
        • 2018-08-26
        • 1970-01-01
        • 2019-08-20
        • 1970-01-01
        • 2016-06-07
        • 1970-01-01
        相关资源
        最近更新 更多