【问题标题】:How to run through an index of an array using higherorder function如何使用高阶函数遍历数组的索引
【发布时间】:2022-11-10 13:35:29
【问题描述】:

你好,所以我有一个有 id 的用户的 json 文件。我创建了一个有 2 个参数的函数,参数 1 是您询问文件名,参数 2 是您传入一个 ID 数组。我遇到的问题是我不知道如何比较传入数组的索引与用户的 json 数组的索引。我想让我的代码使函数返回其 id 已在函数参数中传递的用户,否则它应该返回默认数组中的所有用户。以下是我的代码:

let getUsers = (fileName,userIds = [1,2,3,4]) =>{

    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) 
        {
            let arrUsers = JSON.parse(xhttp.responseText);
            
            //Filtering the code
            let relevant = arrUsers.map((data) =>{
                return data;
            }).filter((data,index) =>{
              
                return data.userid == userIds[index];
            })
            console.log(relevant);
        }
    };
    xhttp.open("GET", fileName, true);
    xhttp.send(); 

}

getUsers('users.json',[1,2])

【问题讨论】:

    标签: javascript arrays ecmascript-6


    【解决方案1】:

    您没有提供 JSON 文件结构,但我认为 arrUsers 类似于:

    // arrUsers
    [
       {userid: ... , ... , ...}, 
       {userid:..., ..., ...}, 
       ...
    ]
    

    所以我建议这个解决方案

    let relevant = arrUsers
    .filter((data,index) =>{              
      return userIds.map(id => id.toString()).includes(data.userid.toString());
    });
    

    PS:我使用 map 和 userIds 来确保我们正在进行类型到类型的比较(这里是字符串到字符串)。

    【讨论】:

      猜你喜欢
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2012-06-26
      相关资源
      最近更新 更多