Javascript 对于数组中的每个元素,执行数组中指定的操作

Javascript 对于数组中的每个元素,执行数组中指定的操作,javascript,dom-manipulation,Javascript,Dom Manipulation,我现在想知道以下几点: 我有两个阵列: const highlightClasses = ['highlightPlace', 'highlightOrg', 'highlightName']; const elements =['place', 'org', 'name'] 还有一个toggleClass函数,它可以神奇地切换类: const toggle = (element, className) => $(element).toggleClass(className); 元素包

我现在想知道以下几点: 我有两个阵列:

const highlightClasses = ['highlightPlace', 'highlightOrg', 'highlightName'];
const elements =['place', 'org', 'name']
还有一个toggleClass函数,它可以神奇地切换类:

const toggle = (element, className) => $(element).toggleClass(className);
元素包含我想从HighlightClass切换类的所有元素

我目前的解决方案是:

const highlightEntities=() => {
    toggle($('place'), 'highlightedPlace');
    toggle($('org'), 'highlightedOrg');
    toggle($('name'), 'highligtedName');
}
我在想一件事

for each (element in elements){
do magic 
}
我想对元素[0]和HighlightClass[0]进行切换,以此类推。在这种情况下 此外,这只是这三个元素和类,我不知道它是否真的值得花时间,但如果我不得不扩展它,我想知道一个更优雅的方式


有这样的方法吗?

试试这样的方法:

for (let i = 0; i < elements.length; i++) {
  toggle($(elements[i]), highlightClasses[i]);
}
const elements = [
  { name: 'place', highlightClass: 'highlightPlace' },
  { name: 'org', highlightClass: 'highlightOrg' },
  { name: 'name', highlightClass: 'highlightName' }
]
因此,更简单的for in-loop是:

for (const element in elements) {
  toggle($(element.name), element.highlightClass);
}

这样,当数组长度不同时,您就不会出错。

我建议使用forEach而不是for,这样会更干净。因为这个问题很简单,我不需要理解索引,因为索引是大多数语言循环的核心部分,他最终会理解的;谢谢大家。我有一个forEach函数不起作用,但这可能是因为我以前的数据结构是两个数组,而不是一个对象数组。我根本没有想过重新排列数据……你也可以用不同的方法,只切换body元素的类。您可以调整CSS选择器,使.highlightedPlace变为body.highlighted.place,然后您只需更改body上的类,其他所有内容都会适应它。只要您似乎在使用jQuery,就可以执行$.eachements,element,idx=>$element.toggleClasshighlightClasses[idx]toggle是这个函数的一个糟糕的名字,因为jQuery toggle做了一些不同的隐藏/显示。我可能应该将它重命名为toggleClasses或类似的东西:-@YevgenGorbunkov我正在使用jQuery,这个答案需要我调整我的数据结构吗?回答如下