JavaScript 中 indexOf 的正确使用
2021-06-06
59
我有一个 javascript 对象:
console.log( 'TYPE OF MY OBJECT:' + typeof myObject );
console.log( 'MY OBJECT:' + myObject );
结果:
TYPE OF MY OBJECT:object
MY OBJECT:der,die,das
如何查找此对象中是否存在字符串?
我尝试使用 indexOf,但似乎不起作用,因为警报框从未出现:
var stringToFind = 'der';
if ( Object.keys( myObject ).indexOf( stringToFind ) != -1 ) {
alert('OK');
}
我也尝试过这个:
var stringToFind = 'der';
if ( myObject.indexOf( stringToFind ) != -1 ) {
alert('OK');
}
它引发了一个错误:
Uncaught TypeError: Cannot read property '0' of undefined
最后我尝试了这个
var stringToFind = 'der';
if ( Object.values( myObject ).indexOf( stringToFind ) != -1 ) {
alert('OK');
}
它也引发了相同的错误:
Uncaught TypeError: Cannot read property '0' of undefined
有人可以帮忙吗?
3个回答
对象没有“字符串”。它们有“属性”,可以是任何东西。
如果您想检查对象上是否存在某个属性,您可以执行以下操作。
var myObject = {
foo: 123
}
typeof myObject.foo // "Number"
typeof myObject.bar // "undefined"
andershagbard
2021-06-06
indexOf()
用于获取字符串中子字符串的位置或获取数组中元素的位置。
If it fails to find element then function will return -1
例如。
// With string
const str = "this string contains a substring.";
console.log(str.indexOf( "substring")); // returns 23
console.log(str.indexOf( "not in str" )); // returns -1
// With list
const fruits = ['apple', 'orange', 'grape'];
console.log(fruits.indexOf( 'grape' )) // returns 2
console.log(fruits.indexOf( 'gra' )) // returns -1 since 'gra' is not a element of fruits array
// If you want to find 'grape' with 'gra'
const result = fruits.filter((fruit) => { if (fruit.indexOf('gra') !== -1) return fruit});
console.log( result ) // returns ["grape"]
Abhin Krishna KA
2021-06-06
由于它是一个数组,您可以检查下面的代码以了解 indexOf 方法的用例。
const stringToFind = 'die';
const myArray = ['der', 'die', 'das'];
if(myArray.indexOf(stringToFind)) {
alert("OK");
}
此外,我建议您按照良好的惯例命名变量,以提高代码的可读性。
jateen
2021-06-06