!== -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所做的。我会去我的老师,但他们目前处于离线状态。有人能解释这对我的意义吗?
indexOf
返回-1
找不到该项目。 !==
是严格不等于运算符。所以那个声明试图说找到了这个项目。
真棒,谢谢! –
indexOf
当子串不存在于字符串中时返回-1。因此,如果“black”在字符串中,则return shoe.name.indexOf('black') !== -1
将返回true,如果不是,则返回false。
@RobG Bah,一个字符串只是一个字符数组;) –
这实际上是一个比较陈述。你可以看到它here
因此,声明shoe.name.indexOf('black') !== -1
将返回取决于一个true
或false
价值如何shoe.name
内容。所以如果没有内容。它返回-1
的indexOf()
的的indexOf()方法返回指定值的第一次出现的调用字符串对象中的索引,开始的fromIndex搜索。如果未找到该值,则返回-1。
你可以看到在MDN更多的例子,https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
不要混淆与Array indexOf
从文档:
的的indexOf()方法返回的第一个出现的位置字符串中的指定值。
如果搜索的值永远不会发生,则此方法返回-1。
文档 - IndexOf()
在你filterBlackShoes
功能,你过滤掉了的黑皮鞋。
name.indexOf('black') !== -1;
说如果indexOf()
返回一个不是-1的数字,那么发现了单词'black'的发生。如果它返回-1,那就意味着它找不到世界黑色。
要过滤的黑皮鞋,你正在寻找的字黑在name
属性的发生,因此,一个数字,是不是-1意味着发生如被发现。
这就是一个比较声明 – ZeekHuge
我知道,但它与-1 –
比较的意义是什么它根据[*严格相等比较算法*](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