有什么意义!== -1?

时间:2017-07-24 23:52:58

标签: javascript

我目前正在学习Javascript,我的工作中出现了以下代码:

var currentInventory = [
  {
    name: 'Brunello Cucinelli',
    shoes: [
      {name: 'tasselled black low-top lace-up', price: 1000},
      {name: 'tasselled green low-top lace-up', price: 1100},
      {name: 'plain beige suede moccasin', price: 950},
      {name: 'plain olive suede moccasin', price: 1050}
    ]
  },
  {
    name: 'Gucci',
    shoes: [
      {name: 'red leather laced sneakers', price: 800},
      {name: 'black leather laced sneakers', price: 900}
    ]
  }
];

function filterBlackShoes(shoeList) {
  return shoeList.filter(function(shoe){
    return shoe.name.indexOf('black') !== -1;
  })
}

function renderBlackShoesForDesigner(designer, shoeList) {
  shoeList = filterBlackShoes(shoeList);
    return shoeList.map(function(shoe){
        return [designer, shoe.name, shoe.price].join(', ')
    })
}

function renderFilteredGoodsStringForDesigner(designerObject) {
  return renderBlackShoesForDesigner(designerObject.name, 
designerObject.shoes).join('\n');
}

function renderInventory(inventory) {
  return inventory.map(function(designerObject) {
    return renderFilteredGoodsStringForDesigner(designerObject);
  }).join('\n');
}

所以我理解代码的作用,它过滤黑鞋并返回该信息。我理解代码如何工作的所有方面,除了!== -1。我会去找我的老师,但他们目前处于离线状态。有人能解释一下这对我的意义吗?

5 个答案:

答案 0 :(得分:3)

无法找到该项目时,

indexOf会返回-1!==是严格的不等于运算符。因此,那里的声明试图说明找到了该项目。

答案 1 :(得分:1)

当字符串中不存在子字符串时,

indexOf返回-1。因此,如果字符串中包含“black”,则return shoe.name.indexOf('black') !== -1将返回true,如果不是,则返回false。

答案 2 :(得分:0)

这实际上是一个比较陈述。你可以看到它here

因此,声明shoe.name.indexOf('black') !== -1会返回truefalse值,具体取决于shoe.name的内容。所以,如果没有内容。它返回-1

答案 3 :(得分:0)

<强>的indexOf()

indexOf()方法返回第一次出现的指定值的调用String对象中的索引,从fromIndex开始搜索。如果找不到值,则返回-1。

您可以在MDN上看到更多示例,https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

不要与Array indexOf

混淆

答案 4 :(得分:0)

来自文档:

  

indexOf()方法返回字符串中第一次出现指定值的位置。

     

如果要搜索的值永远不会发生,则此方法返回-1。

文档 - IndexOf()

在你的filterBlackShoes功能中,你正在过滤黑鞋。

name.indexOf('black') !== -1;说如果indexOf()返回的数字不是-1,则会出现单词&#39; black&#39;已被发现。如果它返回-1,那就意味着它找不到世界 black

要过滤黑色鞋子,您正在寻找name属性中出现的单词 black ,因此不是-1的数字表示发生的事件为找到。