#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» «