我的文档上有四个div,只要其中至少两个具有相同的文本内容,我就想执行一些代码。

我在寻找不包含手动比较每个divs文本内容与每个其他divs文本内容的解决方案时遇到了麻烦

while(div1.textContent === div2.textContent || div1.textContent === div3.textContent || ....)

有一个简单的方法可以做到这一点吗?

-编辑HTML



<div class="container">
	<h2>Answers</h2>
  <div class="row">
    <div class="col-md option" id="option1">
      Answer
    </div>
    <div class="col-md option" id="option2">
      Answer
    </div>
    <div class="col-md option" id="option3">
      Answer
    </div>
    <div class="col-md option" id="option4">
      Answer
    </div>
  </div>
</div>

最佳答案

将div保存到唯一集合中,然后创建其文本内容的Set。如果Set的大小小于集合的长度,则必须有匹配的内容。



test("foo");
test("bar");

function test(cls) {
  var divs = document.querySelectorAll(`.${cls}`);

  var set = new Set(Array.from(divs, el => el.textContent));

  if (set.size < divs.length) {
    console.log(`'${cls}' found matching content`);
  } else {
    console.log(`'${cls}' did not find matching content`);
  }
}

.foo, .bar {
  display: inline-block;
}

.foo {
  color: blue;
}
.bar {
  color: red;
}

<div class="foo">1</div>
<div class="foo">2</div>
<div class="foo">3</div>
<div class="foo">1</div>
<hr>
<div class="bar">1</div>
<div class="bar">2</div>
<div class="bar">3</div>
<div class="bar">4</div>

关于javascript - 比较两个以上值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49222529/

10-12 15:13