使用Vanilla JavaScript

时间:2015-10-14 16:33:01

标签: javascript arrays

我学习编程已经有9个星期,而且我正试图进入Hack Reactor。目前,我已经建立了一个完整的墙,我正在建设一个网站,并希望你能够帮助我(几天的测试和梳理互联网 - 我之前的围绕街区的策略 - 已证明无效)。

总之,我有一个对象数组,每个对象都是一个包含五个属性的教学策略。我的目标是添加一个搜索函数,迭代每个查找关键字的对象,以便教师可以搜索一系列策略。目前我正在使用.map方法在每个检查"标签的对象上迭代一个函数。关键字的属性,但由于某种原因,我无法获得访问"标记的功能。

我已经创建了一个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要求我的项目只使用vanilla JavaScript(没有框架 - 我读过的内容会使这个任务更容易)。

1 个答案:

答案 0 :(得分:0)

除非你知道为什么要这样做,否则你不应该map(),你应该filter()。你现在写这篇文章的方式并没有充分利用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";}
});