我正在获取空数组怎么了?

问题描述 投票:-2回答:3

我希望名称中包含字符串“ Uni”的大学。然后,创建一个名为uni的新数组,其中包含所有数组。我使用HOF方法仍然无法正常工作。

var graduates = [{ id: 4, first_name: "Modestine", university: "International Medical & Technological University", email: "[email protected]" },
  { id: 5, first_name: "Chick", university: "Sultan Salahuddin Abdul Aziz Shah Polytechnic", email: "[email protected]" },
  { id: 6, first_name: "Jakob", university: "Fachhochschule Rosenheim, Hochschule für Technik und Wirtschaft", email: "[email protected]" },
  { id: 7, first_name: "Robbi", university: "Salem University", email: "[email protected]" },
  { id: 8, first_name: "Colline", university: "Coastal Carolina University", email: "[email protected]" },
  { id: 9, first_name: "Michail", university: "Universidad Católica de Ávila", email: "[email protected]" },
  { id: 10, first_name: "Hube", university: "Universitat Rovira I Virgili Tarragona", email: "[email protected]" }]

const unisWithUni = [];
console.log(unisWithUni);
for (let i = 0; i < graduates.length; i++) {
  if (graduates[i].university === "Uni") {
    unisWithUni.push(graduates[i]);
  }
}
javascript arrays
3个回答
1
投票

您应该以这种方式将graduates[i].university === "Uni"更改为graduates[i].university.includes("Uni"),任何包含'Uni'的字符串都将被发现,否则它将仅与“ Uni”完全匹配。

也将console.log(unisWithUni);放在for循环之后。

var graduates = [{ id: 4, first_name: "Modestine", university: "International Medical & Technological University", email: "[email protected]" },
  { id: 5, first_name: "Chick", university: "Sultan Salahuddin Abdul Aziz Shah Polytechnic", email: "[email protected]" },
  { id: 6, first_name: "Jakob", university: "Fachhochschule Rosenheim, Hochschule für Technik und Wirtschaft", email: "[email protected]" },
  { id: 7, first_name: "Robbi", university: "Salem University", email: "[email protected]" },
  { id: 8, first_name: "Colline", university: "Coastal Carolina University", email: "[email protected]" },
  { id: 9, first_name: "Michail", university: "Universidad Católica de Ávila", email: "[email protected]" },
  { id: 10, first_name: "Hube", university: "Universitat Rovira I Virgili Tarragona", email: "[email protected]" }]

const unisWithUni = [];
  for (let i = 0; i < graduates.length; i++) {
    if (graduates[i].university.includes("Uni")) {
      unisWithUni.push(graduates[i]);
    }

}

console.log(unisWithUni);

1
投票

您正在比较一个完整的字符串。在javascript(或几乎所有语言)中,“等于”并不意味着“包含”。因此"hi" === "hi what's up"不相同,它们不相等。

在JavasSript中,您要查找indexOf()(旧的和新的浏览器)或includes()(新的浏览器),所以:

 var graduates = [
     { id: 4, first_name: "Modestine", university: "International Medical & Technological University", email: "[email protected]" },
    { id: 5, first_name: "Chick", university: "Sultan Salahuddin Abdul Aziz Shah Polytechnic", email: "[email protected]" },
    { id: 6, first_name: "Jakob", university: "Fachhochschule Rosenheim, Hochschule für Technik und Wirtschaft", email: "[email protected]" },
    { id: 7, first_name: "Robbi", university: "Salem University", email: "[email protected]" },
    { id: 8, first_name: "Colline", university: "Coastal Carolina University", email: "[email protected]" },
    { id: 9, first_name: "Michail", university: "Universidad Católica de Ávila", email: "[email protected]" },
    { id: 10, first_name: "Hube", university: "Universitat Rovira I Virgili Tarragona", email: "[email protected]"}
];

const unisWithUni = [];
for (let i = 0; i < graduates.length; i++) {
  if (graduates[i].university.indexOf("Uni") > -1) {
    unisWithUni.push(graduates[i]);
  }
}
console.log(unisWithUni);

-1
投票

这里是使用jQuery的map()的示例。为什么,只是因为。

[Note我在搜索字符串uni之前使大学转换为小写,从而使搜索大小写不敏感。

var graduates = [{
    id: 4,
    first_name: "Modestine",
    university: "International Medical & Technological University",
    email: "[email protected]"
  },
  {
    id: 5,
    first_name: "Chick",
    university: "Sultan Salahuddin Abdul Aziz Shah Polytechnic",
    email: "[email protected]"
  },
  {
    id: 6,
    first_name: "Jakob",
    university: "Fachhochschule Rosenheim, Hochschule für Technik und Wirtschaft",
    email: "[email protected]"
  },
  {
    id: 7,
    first_name: "Robbi",
    university: "Salem University",
    email: "[email protected]"
  },
  {
    id: 8,
    first_name: "Colline",
    university: "Coastal Carolina University",
    email: "[email protected]"
  },
  {
    id: 9,
    first_name: "Michail",
    university: "Universidad Católica de Ávila",
    email: "[email protected]"
  },
  {
    id: 10,
    first_name: "Hube",
    university: "Universitat Rovira I Virgili Tarragona",
    email: "[email protected]"
  }
];

var unisWithUni = $.map(graduates, grad => {
  return grad.university.toLowerCase().includes("uni") ? grad : null;
});

console.log(unisWithUni);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.