¿Por qué obtengo un error al intentar usar Array.includes como función para Array.filter en Javascript?

Jason Matthews

Recientemente, cuando trabajaba en un proyecto en javascript, probé algo similar a este fragmento. Me sorprendió descubrir que no funciona y, en cambio, arroja un error.

const test = [1, 2, 3, 4];

const something = [1, 2, 3, 4, ,5, 6, 7, 8].filter(test.includes);

console.log(something);

TypeError: Cannot convert undefined or null to object
    at includes (<anonymous>)
    at Array.filter (<anonymous>)
    at evalmachine.<anonymous>:3:45
    at Script.runInContext (vm.js:74:29)
    at Object.runInContext (vm.js:182:6)
    at evaluate (/run_dir/repl.js:133:14)
    at ReadStream.<anonymous> (/run_dir/repl.js:116:5)
    at ReadStream.emit (events.js:180:13)
    at addChunk (_stream_readable.js:274:12)
    at readableAddChunk (_stream_readable.js:261:11)

¿Es esto un error de JavaScript o estoy entendiendo mal algo aquí? Los siguientes fragmentos funcionan bien:

const test = [1, 2, 3, 4];

const something = [1, 2, 3, 4, ,5, 6, 7, 8].filter(item => test.includes(item));

console.log(something);

Y:

const test = [1, 2, 3, 4];

const someFunc = theThing => test.includes(theThing);
const something = [1, 2, 3, 4, ,5, 6, 7, 8].filter(someFunc);

console.log(something);

Trabajar hacia un estilo de programación más funcional y sin puntos cuando veo los patrones con bastante facilidad, esto parece una inconsistencia.

Editar: esto no es un duplicado. No necesito una aclaración This, solo sobre cómo se manejó en el contexto de la función de inclusión específicamente.

Nina Scholz

Se podría utilizar thisArgde Array#filtery el prototipo de la función del objeto.

const test = [1, 2, 3, 4];

const something = [1, 2, 3, 4, ,5, 6, 7, 8].filter(Array.prototype.includes, test);

console.log(something);

Pero Array#includestiene un segundo parámetro fromIndex, que es entregado por la función de filtro y es el índice, que puede no ser deseado.

En este caso, es mejor que utilice el estilo directo.

const test = [1, 2, 3, 4];

const something = [1, 2, 3, 4, ,5, 6, 7, 8].filter(v => test.includes(v));

console.log(something);

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

TOP Lista

  1. 1

    ¿Cómo ocultar la aplicación web de los robots de búsqueda? (ASP.NET)

  2. 2

    uitableview delete button image in iOS

  3. 3

    Pandas의 CSV 파일을 Pandas 데이터 프레임으로 가져 오기

  4. 4

    El nombre 'HttpContext' no existe en el contexto actual en Razor

  5. 5

    Verilog : 입력 신호를 한 클럭 주기로 지연시키는 방법은 무엇입니까?

  6. 6

    WPF pleine largeur DataGridColumn sur la largeur de DataGrid

  7. 7

    Manera correcta de agregar referencias al proyecto C # de modo que sean compatibles con el control de versiones

  8. 8

    Python, Pandas para hacer coincidir el marco de datos e indicar los hallazgos de una lista

  9. 9

    No se puede trazar la barra doble, trazar la barra usando pyplot para ndarray

  10. 10

    2D 배열에 대한 Numpy 요소 별 평균 계산

  11. 11

    ¿Cómo formatear el valor mínimo y máximo de android-range-seek-bar?

  12. 12

    Problème avec le dessin d'un élément Qml avec des appels OpenGL bruts

  13. 13

    Enlace débil de iOS Framework: error de símbolos indefinidos

  14. 14

    desbordamiento: oculto no funciona al hacer zoom en un iframe de YouTube usando transformar

  15. 15

    Swift / Firebase : Facebook 사용자가 계정을 만들 때 Firebase 데이터베이스에 제대로 저장하려면 어떻게해야합니까?

  16. 16

    multiplica dos números negativos en c ++

  17. 17

    Pandas: suma filas de DataFrame para columnas dadas

  18. 18

    matplotlib로 그래프를 그리는 동안 커서 위치에서 날짜 / 시간을 볼 수 없습니다. "DateFormatter에서 x = 0 값을 찾았습니다"라는 오류가 발생합니다.

  19. 19

    UIButton textLabel with different fonts

  20. 20

    Error de la base de datos de Android Firebase: Permiso denegado al depurar en un teléfono

  21. 21

    Room compile problem - column references a foreign key but it is not part of an index

CalienteEtiquetas

Archivo