JavaScript - 使用if语句检查单词是否在句子中

时间:2018-03-25 14:51:06

标签: javascript loops for-loop if-statement

所以这是我的代码

$(function() {
$.getJSON('test.json', function(data) {
  var items = [];
  $.each( data.products, function( key, val ) {
  for (var i = 0; i < data.products.length; i++) {
    var obj = data.products[i];
    if (obj.title == 'Hat') {
      var Imgs = '<div class="Hats"><img src="' + obj.imUrl + '"></div>'
      $(Imgs).appendTo($(".HatsImages"));
    }
  }
});})})

所以我说明'obj.title'(这句话是“普通黑色可调节帽子”)是否有单词Hat init然后将'obj.imUrl'附加到我的HTML中。

如果我用“普通黑色可调节帽子”替换“帽子”,它可以工作,但我只是想检查“帽子”这个词而不是完整的句子,希望这是有道理的。

3 个答案:

答案 0 :(得分:2)

您可以使用String#includes,但必须记住它区分大小写。解决此问题的一种简单方法是首先转换标题toLowerCase

为了获得更多控制,我建议使用Regular Expressions

为什么呢?考虑一下你在哪里有像#34; Chat&#34;或&#34;那&#34;,其中&#34;帽子&#34;是一个子串。使用正则表达式和word boundaries来解释这一点要容易得多。

&#13;
&#13;
let title1 = "Amazing Hat"
let title2 = "Amazing Cat"
let title3 = "Amazing Chat"

// Using includes
console.log( title1.toLowerCase().includes("hat") ) // true  :)
console.log( title2.toLowerCase().includes("hat") ) // false :)
console.log( title3.toLowerCase().includes("hat") ) // true  :(

// Using regular expression
console.log( (/\bhat\b/gi).test(title1) ) // true  :)
console.log( (/\bhat\b/gi).test(title2) ) // false :)
console.log( (/\bhat\b/gi).test(title3) ) // false :)
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您想要obj.title.includes(‘hat’)

答案 2 :(得分:0)

使用indexOf,我相信它是适用于某种情况的合适工具

 $(function() {
    $.getJSON('test.json', function(data) {
        var items = [];
          $.each( data.products, function( key, val ) {
          for (var i = 0; i < data.products.length; i++) {
            var obj = data.products[i];
            if (obj.title.toLowerCase().indexOf('Hat') >= 0) {
              var Imgs = '<div class="Hats"><img src="' + obj.imUrl + '"></div>'
              $(Imgs).appendTo($(".HatsImages"));
            }
          }
        });})})