【问题标题】:How to check inner arrays that inside of outer array? (Plus => function)如何检查外部数组内部的内部数组? (加号 => 功能)
【发布时间】:2019-03-22 23:49:53
【问题描述】:

对不起,如果这些问题是 JS 的基础知识之一。

问题 1。

我正在尝试让代码检测外部数组内部的内部数组,

而数组的结构是这样的;

var array = ['Bob', ['Tim', 'Katy', 'Zoe'], 'Jimmy', 'Jay' . . .]

<div>
  <ul>
    <li>name goes here</li>
    <li>name goes here</li>
    <li>name goes here</li>
    <li>name goes here</li>
    <li>name goes here</li>
    <li>name goes here</li>
  </ul>
</div>

  const peeps = ['Bob', ['Tim', 'Katy', 'Zoe'], 'Jimmy', 'Jay', 'Louis', 'Yagami Light'];

  $('div ul li').on('mouseenter', function() {
    for (i = 0; i < peeps.length; i++) {
      if (peeps[i][] in peeps[i] == true) {
        console.log('wow')
      }
    }
  })

这是我迄今为止的进步,但从来没有像我预期的那样工作。

问题 2。

我坚持从箭头函数中获取 this 关键字。

$('div ul li').on('mouseenter', () => {
  var a = $(this).index();
  console.log(a);
})

此代码出于某种原因一直显示 -1,但在将 () 更改为 function() {} 后,代码会按我的意愿打印 1、2、3、4。

有人知道为什么=&gt; 函数无法从该代码中获取this 关键字吗?

任何提示或信息都可以很好地解决我的问题。

谢谢。

【问题讨论】:

  • 第二个问题完全是stackoverflow.com/questions/34361379/…的欺骗
  • 请不要在 1 中提出 2 个问题。请更新您的问题以删除第二部分并在需要时提出第二个问题(尽管您已经有一个重复的问题)。
  • @freedomn-m 我认为如果我一一提出所有问题,这可能是垃圾邮件,抱歉。

标签: javascript jquery arrays function anonymous


【解决方案1】:

对于第一个问题,请尝试使用Array.isArray 来检查元素是否为如下所示的数组 -

var peeps = ['Bob', ['Tim', 'Katy', 'Zoe'], 'Jimmy', 'Jay', 'Louis', 'Yagami Light'];

peeps.forEach((d, i) => Array.isArray(d) && console.log('found an array', d))

第二个问题是“using this with Arrow functions”。要解决这个问题,您可以将“箭头函数”更改为 es5 函数

$('div ul li').on('mouseenter', function() {
  var a = $(this).index();
  console.log(a);
})

【讨论】:

  • 那么第二个问题是,没有办法从es6函数样式中获取this关键字?
  • 箭头函数对待“this”的方式不同于普通的 es5 函数(因为词法作用域),这在您的场景中并不能解决目的。我强烈建议阅读我的答案中的链接,以更好地了解不使用箭头函数的地方注意 - 箭头函数不能代替普通的 es5 函数,尤其是在使用“this”关键字时。
  • 感谢您回答和评论我的问题。
猜你喜欢
  • 2020-12-10
  • 2020-04-27
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多