代码之家  ›  专栏  ›  技术社区  ›  bier hier

如何按ID从数组中选择对象?

  •  0
  • bier hier  · 技术社区  · 6 年前

    我有一个对象,其中包含一个名为applications的数组:

    const persons={"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}}
    

    如何从Entities.Applications按ID排列返回项目?

    我试过这样的方法:

    const applicantsById = persons.entities.applicants.find(a => a.id ===id)
    
    console.log(applicantsById.get('16671520041'))
    

    但我不知道怎么把身份证传进去?

    codepen

    5 回复  |  直到 6 年前
        1
  •  2
  •   Nick Parsons Felix Kling    6 年前

    使用 普通JavaScript :

    你需要定义什么 id 在你的设定之前 applicantsById 变量。这样你就可以找到 身份证件 在对象数组中, 身份证件 你定义了。

    const id = '16671520041',
    applicantsById = persons.entities.applicants.find(a => a.id === id);
    

    如果要将此项与多个ID一起使用,可以将其扩展到函数:

    const persons = {"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}},
    getApplicantById = _id => persons.entities.applicants.find(({id}) => id === _id);
    
    console.log(getApplicantById('16671520041')); // Abouli obj
    console.log(getApplicantById('16671520039')); // Purdy obj

    或者,使用 LATASH和ES6 :

    const id = "16671520041";
    res = _.find(persons.entities.applicants, {id}); // Abouli obj
    
        2
  •  2
  •   Karim    6 年前

    applicantsById 需要是在ID上参数化的函数

    const persons={"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}}
    
    const applicantsById = id => persons.entities.applicants.find(a => a.id ===id)
    console.log(applicantsById('16671520041'))
        3
  •  0
  •   Hammad Arshad    6 年前

    您应该创建一个函数。

    const applicantsById = (id) => persons.entities.applicants.find(a => a.id === id)
    applicantsById('16671520041')
    

    这将返回您所需的结果

        4
  •  0
  •   Andy    6 年前

    您可以先定义您的ID,然后再执行 find :

    const id = '16671520041';
    const applicantsById = persons.entities.applicants.find(a => a.id ===id)
    

    或者可以定义一个接受ID作为参数的函数。其他答案包括如何使用现代ES6箭头函数来实现这一点。如果您不熟悉它们,这里是ES5函数声明的编写方法。在这里,我还将人员数据传递给了函数。

    const persons={"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}}
    
    // Accept persons data, and an id
    function getApplicantById(persons, id) {
    
      // Return the found applicant from the function
      return persons.entities.applicants.find(a => a.id ===id);
    }
    
    // Pass in the data, and the id to the function
    const applicant = getApplicantById(persons, '16671520041');
    console.log(applicant);
        5
  •  0
  •   ellipsis    6 年前

    为此使用筛选器

    const persons={"entities":{"applicants":[{"lastName":"Agamemnon","isPrimaryApplicant":false,"id":"16671520038"},{"lastName":"Purdy","isPrimaryApplicant":true,"id":"16671520039"},{"lastName":"Brekky","isPrimaryApplicant":true,"id":"16671520040"},{"lastName":"Abouli","isPrimaryApplicant":true,"id":"16671520041"}]}}
    
    console.log(get(16671520039));
    
    function get(id)
    {
    return persons.entities.applicants.filter((e)=>e.id===id)
    }