Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的筛选器foreach索引值_Javascript_Loops_Filter_Indexof - Fatal编程技术网

Javascript中的筛选器foreach索引值

Javascript中的筛选器foreach索引值,javascript,loops,filter,indexof,Javascript,Loops,Filter,Indexof,如何使用条件if过滤foreach Javascript中的索引值 上次登录=空 然后将过滤后的值存储到 这是searchLogin 下图是:console.log(obj)的输出 以下是我迄今为止所做的: try { this.searchTrigger = true var obj = this.list; this.searchLogin = []; for (let i=0; i < obj.length; ++i){ if(obj.fi

如何使用条件if过滤foreach Javascript中的索引值

上次登录=空

然后将过滤后的值存储到

这是searchLogin

下图是:console.log(obj)的输出

以下是我迄今为止所做的:

try {
   this.searchTrigger = true
   var obj = this.list;

   this.searchLogin = [];

   for (let i=0; i < obj.length; ++i){
       if(obj.filter( x => obj[i].profile.last_login === null)){
          this.searchLogin.push(obj[i]);
       }
   }

console.log('This are obj data passed to search login',this.searchLogin);
试试看{
this.searchTrigger=true
var obj=this.list;
this.searchLogin=[];
for(设i=0;iobj[i].profile.last_login==null)){
this.searchLogin.push(obj[i]);
}
}
console.log('这是传递给搜索登录名的obj数据',这是.searchLogin);

有几点需要注意

  • filter
    函数将返回一个数组,即使该数组为空(没有匹配的结果),它仍将被评估为true,即始终执行if条件
  • 如果
    条件在for循环中有一个过滤函数,这意味着您不必要地为数组中的所有对象检查同一对象的条件,即对于每个对象,过滤函数将返回空数组或所有对象的数组
您可以在结果数组中使用并存储
last\u login
信息

this.searchLogin = this.list.reduce((a,c) => c.profile.last_login === null ? a.concat(c.profile.last_login) : a, []);

我认为无需再次将结果显式保存到数组中,数组上的过滤器本身将根据过滤器条件创建一个结果数组

有关过滤器的更多信息

就你而言

 this.searchLogin = obj.filter( x => x.profile.last_login === null);
会成功的。

var obj=[
{profile:{last_login:null}},
{profile:{last_login:true}},
{profile:{last_login:null}},
{profile:{last_login:true}},
{profile:{last_login:null}}]
//使用过滤器和映射
console.log(“带过滤器和映射:”,
对象映射((x,i)=>({…x.profile,i}))
.filter(x=>!x.last_登录)
.map(x=>x.i));
//减少
console.log(“带reduce:”,
obj.reduce((p,c,i)=>(!c.profile.last_login&&p.push(i,p),[]))

)
是否检查此列表中的所有索引数组值?谢谢:)将尝试此操作。筛选器检查数组中的所有值。请尝试告知。
尝试{this.searchTrigger=true var obj=this.list;this.searchLogin=obj.filter(x=>x.profile.last\u login==null);console.log('This is obj data passed to search login',This.searchLogin);}
使用虚拟值为您创建了一个stackblitz,以复制您的对象列表和预期结果。如果仍然不起作用,请自由编辑这些数据并与您的列表值共享。
searchLogin
要包含对象还是
obj[i].profile.last_login
?@NikhilAggarwal是的,我想将新的筛选数组值推送到searchLogin,条件是如果profile.last_login=null