Введите значение модели из объекта. - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь создать функцию, которая получает массив и объект и возвращает комбинацию из двух, например, так.

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?Возвращенный массив должен заменить текущий массив фруктов.

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Вы можете нанести на карту fruits и обновить ключ seeds, найдя объект seedData со значением ключа name fruits.

.

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))
0 голосов
/ 25 сентября 2018

Вы можете в основном отобразить массив и вернуть обновленные данные

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));
0 голосов
/ 25 сентября 2018

Вы можете использовать .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; }
...