Преобразовать строку из переменной в другую переменную - PullRequest
1 голос
/ 30 июня 2019

У меня есть строка, полученная с карты, и я хочу преобразовать ее в переменную. Вот полный пример: 1. У меня есть следующий список элементов:

const Fruits = [
  {
    name: 'Apple',
    width: 100,
    height: 100,
    shape: 'apple',
  },
  {
    name: 'Banana',
    width: 10,
    height: 100,
    shape: 'banana',
  },
]
const Fruits1 = [
  {
    name: 'Orange',
    width: 100,
    height: 100,
    shape: 'orange',
  },
  {
    name: 'Lemon',
    width: 10,
    height: 100,
    shape: 'lemon',
  },
]
И второй список предметов:
const items = [
  {
    name: 'Fruits',
    abbr: 'A',
  },
  {
    name: 'Fruits1',
    abbr: 'b',
  },
]
Я хочу преобразовать строку "item.name" в "Fruits", чтобы передать const Fruits в виде списка в переменную "newList", например:
const listItems = items.map((item, index) =>
    <Item
      key={index}
      newList={item.name} // I need this one to become variable and not to evaluate into string
      {...props}
    />
  );

Anyпредложение о том, как это сделать?

Я ожидаю этого результата:

const listItems = items.map((item, index) =>
    <Item
      key={index}
      newList={Fruits} // I need this one to become variable and not to evaluate into string
      {...props}
    />
  );

Примечание: item.name будет "Fruits" для первого элемента, затем "Fruits1" длявторой и так далее ...

Ответы [ 4 ]

1 голос
/ 30 июня 2019

Похоже, вам нужно переименовать ключ в items объект JSON.

Вы можете попробовать это сделать,

items.forEach(item=>{
  item.Fruits = item.name
  delete item.name
})

Введите:

[
  {
    name: 'Apple',
    abbr: 'A',
  },
  {
    name: 'Banana',
    abbr: 'b',
  },
]

Выход:

[
  {
    abbr: "A" ,
    Fruits: "Apple"
  }
  {
    abbr: "b" ,
    Fruits: "Banana"
  }  
]
1 голос
/ 30 июня 2019

Если я правильно понимаю, вы хотите использовать названия предметов, чтобы получить данные из коллекции Fruit.это простой способ сделать это.

const listItems = items.map((item, index) =>
  <Item
  key={ index }
  newList = { Fruits.find(fruit => fruit.name === item.name) } // I need this one to become variable and not to evaluate into string
  { ...props }
  />
);
0 голосов
/ 30 июня 2019

этот код только в том случае, если у вас есть два массива: Fruits и Fruits1, это то, что я понял из вашего вопроса, вам нужен список.надеюсь, я ответил на ваш вопрос.

const listItems = items.map((item, index) => {
      const Fruits = Fruits.find(fruit => fruit.name === item.name);

      if (!Fruits) {
        Fruits = Fruits1.find(fruit => fruit.name === item.name);
      }
      return (
        <Item
          key={index}
          newList={Fruits} // I need this one to become variable and not to evaluate into string
        />
      );
    });
0 голосов
/ 30 июня 2019

Попробуйте это:

const Fruits = [
  {
    name: 'Apple',
    width: 100,
    height: 100,
    shape: 'apple',
  },
  {
    name: 'Banana',
    width: 10,
    height: 100,
    shape: 'banana',
  },
]

const items = [
  {
    name: 'Apple',
    abbr: 'A',
  },
  {
    name: 'Banana',
    abbr: 'b'}
    ]
 

const result  =  items.map((ele, i) => ({key:i, newList:Fruits.find(r=>r.name===ele.name) ,...ele}) ); 

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...