JavaScript-如何在一定条件下获取数组值?
我想过滤let data数组。我创建了带有过滤let数据数组值条件的map函数,以获得结果[“真”、“假”、“真”],但我还希望在结果为真时显示let数据数组值 这是我的密码:JavaScript-如何在一定条件下获取数组值?,javascript,Javascript,我想过滤let data数组。我创建了带有过滤let数据数组值条件的map函数,以获得结果[“真”、“假”、“真”],但我还希望在结果为真时显示let数据数组值 这是我的密码: let data = { "days": { "Monday": { "checkin": "23:00", "checkout": "
let data =
{
"days": {
"Monday": {
"checkin": "23:00",
"checkout": "10:00"
},
"Tuesday": {
"checkin": "07:00",
"checkout": "14:00"
},
"Wednesdy": {
"checkin": "07:00",
"checkout": "04:00"
},
}
}
let day = ['Monday','Tuesday','Wednesdy'];
const ds = Object.keys(data.days);
const getin = (day) =day.map (d=> ds.indexOf(d)>=0 && data.days[d].checkin >= data.days[d].checkout);
console.log("===Results===",getin);
当过滤条件为真时,您可以通过在新数组中推送对象来执行以下操作
let数据=
{
“天”:{
“星期一”:{
“签入”:“23:00”,
“结帐”:“10:00”
},
“星期二”:{
“签入”:“07:00”,
“结帐”:“14:00”
},
“星期三”:{
“签入”:“07:00”,
“结帐”:“04:00”
},
}
}
let day=[‘星期一’、‘星期二’、‘星期三’];
const ds=Object.keys(data.days);
常数daysRes=[];
const getin=(day)=day.map(d=>{
如果(ds.indexOf(d)>=0&&data.days[d]。签入>=data.days[d]。签出){
daysRes.push(data.days[d]);
返回true;
}
返回false;
});
log(“==Results==”,getin);
console.log(“==ResultsDays==”,daysRes)代码>如果我没有错,您希望筛选
,然后返回所有项目匹配条件
您可以与.reduce一起使用来实现它
let数据=
{
“天”:{
“星期一”:{
“签入”:“23:00”,
“结帐”:“10:00”
},
“星期二”:{
“签入”:“07:00”,
“结帐”:“14:00”
},
“星期三”:{
“签入”:“07:00”,
“结帐”:“04:00”
},
}
}
let day=[‘星期一’、‘星期二’、‘星期三’];
var result=Object.entries(data.days).reduce((acc,[key,value])=>{
if(day.indexOf(key)>=0&&value.checkin>=value.checkout)
acc.push({[key]:value});
返回acc;
}, []);
控制台日志(结果)代码>我不知道为什么您会被困在这个阶段,因为它非常琐碎
在这方面:
const getin = (day) =day.map (d=> ds.indexOf(d)>=0 && data.days[d].checkin >= data.days[d].checkout);
您实际上是在分配ds.indexOf(d)>=0&&data.days[d]。签入>=data.days[d]。签出到getin
和day
的结果
ds.indexOf(d)>=0&&data.days[d]。签入>=data.days[d]。签出是一个布尔值,因为它是两个检查的输出
您可以使用类似这样的内容来使用检查,而不是返回检查本身:ds.indexOf(d)>=0&&data.days[d]。签入>=data.days[d]。签出?d:false
<代码>?
是一个条件运算符,有助于减少键入if-else语句
修改后的代码:
let data =
{
"days": {
"Monday": {
"checkin": "23:00",
"checkout": "10:00"
},
"Tuesday": {
"checkin": "07:00",
"checkout": "14:00"
},
"Wednesdy": {
"checkin": "07:00",
"checkout": "04:00"
},
}
}
let day = ['Monday','Tuesday','Wednesdy'];
const ds = Object.keys(data.days);
const getin = (day) =day.map (d=> ds.indexOf(d)>=0 && data.days[d].checkin >= data.days[d].checkout ? d : false);
console.log("===Results===",getin);
使用而不是
let数据={
天数:{
星期一:{
签入:“23:00”,
结帐:“10:00”
},
星期二:{
签入:“07:00”,
结帐:“14:00”
},
星期三:{
签入:“07:00”,
结帐:“04:00”
}
}
};
let day=[“周一”、“周二”、“周三”];
const ds=Object.keys(data.days);
const getin=Object.values(data.days).filter(d=>(d.checkin>=d.checkout));
log(“==Results==”,getin)代码>