Как отфильтровать объект и отобразить его в React

#reactjs

#reactjs

Вопрос:

Как отфильтровать значение объекта из desc на основе main.

Есть ли какой-либо возможный способ, которым я могу получить значение xyz, qwer, poiu и сохранить в переменную. В качестве основного содержимого 1,3,5 поэтому я хочу получить значение объекта desc xyz, qwer, poiu в Reactjs

 const data = {
  main: '1,3,5',
  desc: [
    {
      id: '1',
      value: 'xyz'
    },
    {
      id: '2',
      value: 'abc'
    },
    {
      id: '3',
      value: 'qwer'
    },
    {
      id: '4',
      value: 'cwer'
    },
    {
      id: '5',
      value: 'poiu'
    }
  ]
}
  

Я пробовал это, но это не удается

 export default function App() {
  const res = data.desc.find(d => d.id === data.main)
  console.log(res);

  

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
       {res amp;amp; res.value}
    </div>
  );
}
  

Ответ №1:

data.main это строка, поэтому вы должны разбить ее на array , затем отфильтровать, сопоставив с data.desc.id . CodeSandbox:https://codesandbox.io/s/sleepy-breeze-6tch6?file=/src/App.js

 const data = {
  main: '1,3,5',
  desc: [
    {
      id: '1',
      value: 'xyz'
    },
    {
      id: '2',
      value: 'abc'
    },
    {
      id: '3',
      value: 'qwer'
    },
    {
      id: '4',
      value: 'cwer'
    },
    {
      id: '5',
      value: 'poiu'
    }
  ]
}

var filtered = data.desc.filter(e => data.main.split(',').indexOf(e.id) !== -1);
console.log(filtered)  

Комментарии:

1. что на самом деле означает эта строка .indexOf(e.id) !== -1 ?

2. var filtered = data.desc.filter(e => data.main.split(',').includes(e.id)); Вы могли бы использовать includes для удобства чтения, если indexOf вас смущает. Используйте indexOf , когда вам нужен индекс массива. Вы могли бы проверить документы здесь

3. indexOf является функцией массива для нахождения индекса первого появления элемента, если элемента нет в массиве, то он вернет -1 дополнительную информацию: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…

4. что делать, если сеть имеет только одно значение, в случае, когда разделение не является функцией, будет ошибка « сеть: «1» «