JS juzga si un objeto o una matriz contiene un determinado atributo o un determinado valor

1. Determinar si un objeto contiene un determinado atributo

Puede utilizar los siguientes métodos para determinar si un objeto contiene una propiedad:

1. inOperador:

Utilice inel operador para verificar si un objeto contiene una propiedad específica. Comprueba todas las propiedades del objeto y su cadena de prototipos.

const obj = {
    
     name: 'John', age: 25 };
console.log('name' in obj); // 输出: true
console.log('gender' in obj); // 输出: false

2. hasOwnProperty()Método:

hasOwnProperty()Es el método incorporado de un objeto, que se utiliza para verificar si el objeto en sí tiene las propiedades especificadas (excluyendo las propiedades en la cadena de prototipo).

const obj = {
    
     name: 'John', age: 25 };
console.log(obj.hasOwnProperty('name')); // 输出: true
console.log(obj.hasOwnProperty('gender')); // 输出: false

3. Usar undefinedpara juzgar:

Al acceder a la propiedad de un objeto y undefinedcompararla con , puede saber si un objeto contiene esa propiedad.

Pero cuando obj es nulo o indefinido, se informará un error.

const obj = {
    
     name: 'John', age: 25 };
console.log(obj.name !== undefined); // 输出: true
console.log(obj.gender !== undefined); // 输出: false

4. Object.keys()Cómo usar:

Object.keys()El método devuelve una matriz que contiene las propiedades enumerables propias del objeto. Puede usar este método para obtener todas las propiedades de un objeto y determinar si la propiedad especificada existe en la matriz devuelta.

const obj = {
    
     name: 'John', age: 25 };
console.log(Object.keys(obj).includes('name')); // 输出: true
console.log(Object.keys(obj).includes('gender')); // 输出: false

Observaciones: estos métodos se pueden utilizar según sus necesidades para determinar si un objeto contiene un determinado atributo.Tenga en cuenta que los primeros tres métodos undefinedtambién regresan cuando el valor de la propiedad es true, mientras que el último método no undefinedtrata como una propiedad existente.

5. Reflect.has(obj , keyName)Cómo usar:

Reflect.has(obj, nombre)
El método Reflect.has corresponde al operador in en nombre en obj.
Si el primer parámetro del método Reflect.has() no es un objeto, se informará un error.

 let obj = {
    
    
     name: '再努力些吧',
     age: 18,
     work: '前端',
 }
 // 旧写法
 console.log('age' in obj);//true
 console.log('sex' in obj);//false
 // 新写法
 console.log(Reflect.has(obj, 'age'));//true
 console.log(Reflect.has(obj, 'sex'));//false

6. propertyIsEnumerable()Equivalente a una versión mejorada de hasOwnProperty()

El uso de este método es el mismo que hasOwnProperty(), pero solo devuelve verdadero cuando la propiedad detectada es una propiedad propia (no heredada) y la propiedad es enumerable.

La memoria conveniente puede entenderse como:

  1. in: devuelve verdadero siempre que el objeto contenga una propiedad, incluidas las propiedades en la cadena de prototipos
  2. hasOwnProperty: primero satisface y segundo, la propiedad no pertenece a la cadena de prototipos
  3. propertyIsEnumerable: en primer lugar, se cumple hasOwnProperty y, en segundo lugar, la propiedad no está definida como no enumerable por Object.defineProperty
/* 如下例子我就不写了引用别人的。作者:Netmad,来源:知乎,
链接:https://www.zhihu.com/question/21907133/answer/378501127  */
function foo() {
    
    
  this.id = 'id';
}
foo.prototype.common = 'common';
var o = new foo();

'id' in o; // true
'common' in o; // true
'whatever' in o; // false
o.hasOwnProperty('id'); //true
o.hasOwnProperty('common'); //false
o.propertyIsEnumerable('id'); //true
o.propertyIsEnumerable('common'); //false
// 目前为止, hasOwnPerproty和propertyIsEnumerable看上去没啥差别
// 通过Object.defineProperty定义新的属性
Object.defineProperty(o, 'prop', {
    
    
  value: 'valueOfProp',
  enumerable: false
});
o.prop; // valueOfProp
o.hasOwnProperty('prop'); // true
o.propertyIsEnumerable('prop'); //false
// 如果defineProperty时enumerable为true, 那么这里依然和hasOwnProperty一样

Los métodos anteriores pueden determinar si un objeto contiene un determinado atributo, y se pueden usar diferentes métodos en el trabajo de acuerdo con diferentes situaciones.

2. Determinar si una matriz contiene un cierto valor

Hay varias formas de verificar si una matriz contiene un valor:

1. includes()Método:

includes()El método se utiliza para verificar si la matriz contiene el valor especificado y devuelve un valor booleano.

const arr = [1, 2, 3, 4, 5];
console.log(arr.includes(3)); // 输出: true
console.log(arr.includes(6)); // 输出: false

2. indexOf()Método:

indexOf()Método devuelve el índice de la primera aparición del valor especificado en la matriz, o -1 si no existe.

const arr = [1, 2, 3, 4, 5];
console.log(arr.indexOf(3) !== -1); // 输出: true
console.log(arr.indexOf(6) !== -1); // 输出: false

3. find()Método:

find()El método devuelve el valor del primer elemento de la matriz que satisface la función de prueba proporcionada, o lo devuelve si no existe ninguno undefined.

const arr = [1, 2, 3, 4, 5];
console.log(arr.find(element => element === 3) !== undefined); // 输出: true
console.log(arr.find(element => element === 6) !== undefined); // 输出: false

4. some()Método:

some()El método comprueba si al menos un elemento de la matriz supera la función de prueba proporcionada y devuelve un valor booleano.

const arr = [1, 2, 3, 4, 5];
console.log(arr.some(element => element === 3)); // 输出: true
console.log(arr.some(element => element === 6)); // 输出: false

Observaciones: estos métodos se pueden usar según sus necesidades para determinar si una matriz contiene un valor determinado. Tenga en cuenta que los tres primeros métodos utilizan el operador de igualdad estricta ( ===) al comparar valores, mientras que some()el método lo hace probando la función.

5. findIndex()Método:

Valor devuelto: Si se encuentra un elemento que cumple la condición, se devuelve el índice del elemento (mayor o igual a 0), si no se encuentra ningún elemento que cumpla la condición, se devuelve -1.
Método de juicio: proporcionandofunción de pruebaCada elemento de la matriz se juzga hasta que se encuentra un elemento que satisface la condición.
Ejemplo:

const arr = [1, 2, 3, 4, 5];
console.log(arr.findIndex(element => element === 3)); // 输出: 2
console.log(arr.findIndex(element => element === 6)); // 输出: -1

Los 5 tipos anteriores son todosES6Aumentó.

Supongo que te gusta

Origin blog.csdn.net/m0_37577465/article/details/131889375
Recomendado
Clasificación