2017-07-24 147 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意味着發生如被發現。