2017-07-24 9 views
1

Ich bin derzeit Student Javascript Lernen und der folgende Code kam in meiner Arbeit auf:Was ist die Bedeutung von! == -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'); 
} 

So verstehe ich, was der Code tut, es filtert für die schwarzen Schuhe und gibt diese Informationen. Ich verstehe alle Aspekte, wie der Code funktioniert, außer was das! == -1 tut. Ich würde zu meinen Lehrern gehen, aber sie sind derzeit offline. Kann mir jemand die Bedeutung davon erklären?

+0

Das ist eine Vergleichsaussage – ZeekHuge

+0

Ich weiß das, aber was ist die Bedeutung des Vergleiches mit -1 –

+0

Es wird getestet, dass der Wert nicht '-1' nach dem [* strikte Gleichheit Vergleich Algorithmus *] (http:// ecma-international.org/ecma-262/8.0/# sec-strict-Gleichheit-Vergleich) (d. h. es muss ein Zahlenwert von -1 sein). Die [* indexOf * -Methode] (http://ecma-international.org/ecma-262/8.0/#sec-string.prototype.indexof) gibt -1 zurück, wenn keine Übereinstimmung gefunden wird. – RobG

Antwort

3

indexOf gibt -1 zurück, wenn der Artikel nicht gefunden werden kann. !== ist ein strikt nicht gleich operator. Also versucht die Aussage zu sagen, dass der Gegenstand gefunden wurde.

+0

Super, danke! –

1

indexOf gibt -1 zurück, wenn die Teilzeichenfolge in der Zeichenfolge nicht vorhanden ist. So wird return shoe.name.indexOf('black') !== -1 wahr zurückgeben, wenn "schwarz" in der Zeichenfolge ist, und falsch, wenn dies nicht der Fall ist.

+0

@RobG Bah, eine Zeichenfolge ist nur eine Reihe von Zeichen;) –

0

Das ist eigentlich eine Vergleichsaussage. Sie können es also here

sehen, die Aussage shoe.name.indexOf('black') !== -1 würde einen true oder false Wert zurück, je nachdem, wie der Gehalt an shoe.name. Also wenn es keine Inhalte gibt. Es gibt -1

0

Von dem Docs verwirrt zu bekommen:

Die indexOf() -Methode gibt die Position des ersten Auftretens ein angegebener Wert in einer Zeichenfolge

Diese Methode gibt -1 zurück, wenn der zu suchende Wert nie auftritt.

Docs - IndexOf()

In Ihrer filterBlackShoes Funktion sind Filterung Sie die schwarzen Schuhe aus.

name.indexOf('black') !== -1; sagt, wenn die indexOf() eine Zahl zurückgibt, die nicht -1 ist, dann wurde ein Vorkommen des Wortes 'schwarz' gefunden. Wenn es -1 zurückgibt, würde das bedeuten, dass es die Welt schwarz nicht finden könnte.

die schwarzen Schuhe zu filtern, werden Sie nach einem Vorkommen des Wortes schwarz im name Attribute, und daher eine Zahl, die nicht -1 bedeutet suchen, dass ein Ereignis wie gefunden worden.

Verwandte Themen