使用香草JavaScript搜索对象数组

Search Array of Objects Using Vanilla JavaScript

本文关键字:对象 数组 搜索 JavaScript 香草      更新时间:2023-09-26

我已经学习编程9周了,我正试图进入Hack Reactor。目前,我正在建立一个网站,遇到了完全的障碍,希望你能帮助我(几天的测试和梳理互联网-我以前的绕过障碍的策略-被证明是徒劳的)。

总之,我有一个对象数组,每个对象是一个包含五个属性的教学策略。我的目标是添加一个搜索函数,迭代每个对象寻找关键字,这样教师就可以搜索策略数组。目前,我正在使用。map方法来迭代每个对象的函数,该对象检查关键字的"tags"属性,但由于某种原因或其他原因,我无法让函数访问"tags"。

我已经创建了一个JSFiddle供您查看:https://jsfiddle.net/jnemec/4ps8rLLx/

var myIdeas = [
   {name: "Choral",
   image: "img/xideas/choral.jpg",
   grade: [1, 9, 9],
   theory: "Theory:" + "<br>" + "Coming Soon.",
   tags: ["CFU", "literacy"]},
   {name: "Highlighters",
   image: "img/xideas/highlighters.jpg",
   grade: [2, 2, 3],
   theory: "Theory:" + "<br>" + "Coming Soon.",
   tags: ["manipulative", "differentiation"]},
];
var input = "literacy"
var output = myIdeas.map(function(input) {
   if (input == "tags") {
      output += "name";
   } else {
      return "no matches, please try again";}
});

最后一件事- Hack Reactor要求我的项目只使用普通JavaScript(没有框架-从我所读到的会使这个任务更容易)。

除非你知道你为什么这样做,在这种情况下你不应该是map() 'ing,你应该是filter() 'ing。你现在写这个的方式并没有很好地利用map()——你还不如用forEach()。你从回调中返回的东西没有意义,也不会以一种合理的方式来检测和报告给用户(尽管你可以只使用output的值来检测相同的条件)。

阅读map(), filter()forEach(),并思考它们如何应用于这种情况以及您需要什么样的输出。

在每次回调调用中,input是对象,所以如果您想访问标记,它将是input.tags。如果您想访问外部input(您的搜索词),您需要以不同的方式命名其中一个。

var input = "literacy";
// `input` here declares a variable name that will be set to the current
// element of the array during each invocation of the callback.
var output = myIdeas.map(function(input) {
  // `input` now refers to the argument to this function. You've shadowed the
  // outer var of the same name and can no longer access it.
  // `input` is now an object from the array. If you want to access a prop like
  // `tags`, it's `input.tags`;
  if (input == "tags") {
    output += "name";
  } else {
    return "no matches, please try again";}
});