【问题标题】:How can I find an object in an object array?如何在对象数组中找到对象?
【发布时间】:2020-02-07 11:48:50
【问题描述】:

这是一个 obj。

var person = {
    no: 4,
    name: "Jack",
    hobbies:["soccer, dancing"],
    club: "lion"
}

这里是对象数组。

var club = {
    no: 2,
    name: "lion",
    teacher: "Linda",
    num: 24
    students: [person, person2, person3, ...]
}

var school = {
    no: "NW-10",
    name: "The school of Victory",
    address: "23 Vega St. Gorgia, Texas",
    classes: [club, club2, club3, ...]
} 

我想在学校找一门课。学校只是其中之一。而Class、Person是多重的。

我想添加、删除、编辑它所属的schoolclass

有没有办法找到一个有索引的对象?我的意思是像一个HashMap。您可以使用这样的字符串访问值。

var mAge = mPerson["age"];
var mAge = mPerson.age;

我可以使用 for 循环找到对象,但是登录似乎非常复杂,效率不如 O(n^2)。

编辑

我想在一个带有 Object 的数组中完成 getputremoveedit

例如,

我想删除person3。然后,我可以像这样找到它的类。

school[person.club].remove(); // The club item is removed.

school2[person.club].put(2); // The club item is added after second club object.

它将在 O(n) 中找到该项目。

【问题讨论】:

标签: javascript node.js object hashmap


【解决方案1】:

如果你想要一个特定的功能,我会为它创建一个函数。例如,您可以创建 removeClub 函数和 putClub 函数:

var person = {
    no: 4,
    name: "Jack",
    hobbies:["soccer, dancing"],
    club: "lion"
};

var club = {
    no: 2,
    name: "lion",
    teacher: "Linda",
    num: 24,
    students: [person]
}

var school = {
    no: "NW-10",
    name: "The school of Victory",
    address: "23 Vega St. Gorgia, Texas",
    classes: [club]
};

function removeClub(clubName){
  var clubIndex = school.classes.findIndex(c => c.name === clubName);
  school.classes.splice(clubIndex, 1);
}

function putClub(clubName, index){
  school.classes.splice(index, 0, clubName);
}

removeClub(person.club);
putClub(person.club,0);
console.log(school);

【讨论】:

  • O(1)中没有办法吗?
  • 我试过这个方法,不知道一个对象是否也能正常工作。我做了slice(index, 1) 删除了 Object 元素,但它没有被删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 2021-01-15
  • 1970-01-01
  • 2022-06-16
  • 2022-01-12
相关资源
最近更新 更多