我目前正在学习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。我会去找我的老师,但他们目前处于离线状态。有人能解释一下这对我的意义吗?
答案 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
会返回true
或false
值,具体取决于shoe.name
的内容。所以,如果没有内容。它返回-1
答案 3 :(得分:0)
<强>的indexOf()强>
indexOf()方法返回第一次出现的指定值的调用String对象中的索引,从fromIndex开始搜索。如果找不到值,则返回-1。
您可以在MDN上看到更多示例,https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
混淆答案 4 :(得分:0)
来自文档:
indexOf()方法返回字符串中第一次出现指定值的位置。
如果要搜索的值永远不会发生,则此方法返回-1。
文档 - IndexOf()
在你的filterBlackShoes
功能中,你正在过滤黑鞋。
name.indexOf('black') !== -1;
说如果indexOf()
返回的数字不是-1,则会出现单词&#39; black&#39;已被发现。如果它返回-1,那就意味着它找不到世界 black 。
要过滤黑色鞋子,您正在寻找name
属性中出现的单词 black ,因此不是-1的数字表示发生的事件为找到。