Reputation: 179
filter
method? Here I did it by using a for
loop:const [dataObject, setdataObject] = useState([{}]);
const [filterData, setfilterData] = useState({});
const showMillions = () => {
// //console.log(dataObject);
let x = 0;
let name = '';
for (let i = 0; i < dataObject.length; i++) {
// console.log(dataObject);
if (dataObject[i].money > x) {
x = dataObject[i].money;
name = dataObject[i].name;
}
}
setfilterData(name);
for (let i = 0; i < dataObject.length; i++) {
if (filterData === dataObject[i].name) {
setdataObject([dataObject[i]]);
}
}
};
<div><button className="btn btn-dark" onClick={showMillions} >Show Millionaires</button></div>
Upvotes: 0
Views: 49
Reputation: 5054
You had to click the button twice because the setfilterData(name)
is asynchronous. You can either use useEffect or use the name
instead of filterData
in the last for loop.
const [dataObject, setdataObject] = useState([{}]);
const [filterData, setfilterData] = useState({});
useEffect(() => {
// using filter
setDataObject(dataObject.filter((item) => item.name === filterData));
}, [filterData]);
const showMillions = () => {
// //console.log(dataObject);
let x = 0;
let name = '';
for (let i = 0; i < dataObject.length; i++) {
// console.log(dataObject);
if (dataObject[i].money > x) {
x = dataObject[i].money;
name = dataObject[i].name;
}
}
setfilterData(name);
}
};
<div><button className="btn btn-dark" onClick={showMillions} >Show Millionaires</button></div>
Upvotes: 1