I am looking for a simple solution to compare just the "session" values from two different arrays of objects using React.JS.
I have:
this.state = {
dataOne: [
{
id: "1",
session: "10:00",
value: "10:00"
},
{
id: "2",
session: "10:15",
value: "10:15"
},
{
id: "3",
session: "10:30",
value: "10:30"
},
{
id: "4",
session: "10:45",
value: "10:45"
},
{
id: "5",
session: "11:00",
value: "11:00"
},
],
dataTwo: [
{
id: "6",
session: "10:00",
value: "10:00"
},
{
id: "7",
session: "10:15",
value: "10:15"
},
{
id: "8",
session: "11:30",
value: "11:30"
},
{
id: "9",
session: "12:45",
value: "12:45"
},
{
id: "10",
session: "13:00",
value: "13:00"
},
]
}
}
Those are the two arrays I need to compare.
I tried the following thing:
if(this.state.dataOne.map(item => item.session) === (this.state.dataTwo.some(item => item.session)) {
return console.log('true');
else {
return console.log('false);
}
Any suggestions? It always returns false to me....
Array.prototype.map
will return an object(array) and Array.prototype.some
will return a boolean. Since you are using a strict equal, the expression will always be evaluated to false
const dataOneSession = this.state.dataOne.map(item => item.session);
const dataTwoSession = this.state.dataTwo.map(item => item.session);
let isAllValueMatched = true;
dataOneSession.forEach((value, i) => {
if(value !== dataTwoSession[i]) {
isAllValueMatched = false;
}
});
if(isAllValueMatched) console.log(true);
else console.log(false);
I just corrected the code that you had given, we can write this code in an optimised way if you furnish more information like, are the arrays going to be in same length, will there be a dataThree? etc.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.