2017-07-24 97 views
1

我目前一个学生学习的Javascript和下面的代码在我的工作上来:!== -1的意义是什么?

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所做的。我会去我的老师,但他们目前处于离线状态。有人能解释这对我的意义吗?

+0

这就是一个比较声明 – ZeekHuge

+0

我知道,但它与-1 –

+0

比较的意义是什么它根据[*严格相等比较算法*](http:/ *)测试值不是'-1'/ECMA-国际。org/ecma-262/8.0 /#sec-strict-equality-comparison)(即它必须是数值-1)。如果未找到匹配项,[* indexOf *方法](http://ecma-international.org/ecma-262/8.0/#sec-string.prototype.indexof)将返回-1。 – RobG

回答

3

indexOf返回-1找不到该项目。 !==是严格不等于运算符。所以那个声明试图说找到了这个项目。

+0

真棒,谢谢! –

1

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

+0

@RobG Bah,一个字符串只是一个字符数组;) –

0

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

因此,声明shoe.name.indexOf('black') !== -1将返回取决于一个truefalse价值如何shoe.name内容。所以如果没有内容。它返回-1

0

从文档:

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

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

文档 - IndexOf()

在你filterBlackShoes功能,你过滤掉了的黑皮鞋。

name.indexOf('black') !== -1;说如果indexOf()返回一个不是-1的数字,那么发现了单词'black'的发生。如果它返回-1,那就意味着它找不到世界黑色

要过滤的黑皮鞋,你正在寻找的字name属性的发生,因此,一个数字,是不是-1意味着发生如被发现。