我如何使对象形成具有这样的参数函数的数组

时间:2019-06-03 13:45:46

标签: javascript angular typescript

在与用户确定的id和数组对象进行比较的情况下,我只会得到一个对象。

var laptops = [{
    "name": "Firefox",
    "age": 30,
    "id": "ab"
  },
  {
    "name": "Google",
    "age": 35,
    "id": "cd",
    "date": "00.02.1990"
  },
  {
    "name": "Microsoft",
    "id": "ef",
    "age": 40
  }
];


getLaptopByAsin(id: string) {
  var laptop = this.laptops.find(
    (laptopObject) => {
      return laptopObject.name === id;
    }
  );
  return laptop;
}
var enter = "cd";
name = this.getLaptopByAsin(enter).name;
age = this.getLaptopByAsin(enter).age;
date = this.getLaptopByAsin(enter).date;
console.log(name)
console.log(age)
console.log(date)

1 个答案:

答案 0 :(得分:0)

您的问题是您过滤了姓名:

this.laptops.find(
    (laptopObject) => {
      return laptopObject.name === id;
    }
 );

解决问题并进行一些重构后,代码将变为:

getLaptopByAsin(id: string) {
  return this.laptops.find(
    laptopObject => laptopObject.id === id
  );
}

其他一些评论:

  • 在可能的情况下,尝试更频繁地使用const而不是var。
  • 以这种方式保存日期可能会在将来给您带来一些麻烦。改用一些标准,例如https://en.wikipedia.org/wiki/Epoch
  • 避免在不需要时调用多个函数,将结果从getLaptopByAsin保存到变量(const foundLaptop)中,这样就无需遍历数组多次。例如:

    const foundLaptop = this.getLaptopByAsin('cd'); console.log(foundLaptop.name); console.log(foundLaptop.age,foundLaptop.date);