No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Adquiere por un a帽o todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

2D
2H
6M
39S

Some

13/28
Recursos

El m茅todo somees inmutable y consiste retornar un valor l贸gico verdadero si existe al menos un elemento que cumpla la condici贸n establecida en la funci贸n (callback).

Este m茅todo recibe dos argumentos:

  • La funci贸n que itera y eval煤a cada elemento del array hasta que al menos uno cumpla con la condici贸n especificada (obligatorio).
  • Un objeto al que puede hacer referencia el contexto this en la funci贸n. Si se lo omite, ser谩 undefined. Recuerde que this en arrow functions es el objeto global.
array.some(function(), thisArg)

La funci贸n, que recibe como argumento el m茅todo some, utiliza tres par谩metros:

  • El valor actual del elemento iterado. Es decir, si es la primera iteraci贸n, ser谩 el primer elemento, y as铆 sucesivamente.
  • El 铆ndice del elemento iterado. Es decir, si es la primera iteraci贸n, ser谩 el 铆ndice 0, y as铆 sucesivamente.
  • El array que est谩 iterando.
array.some(function(element, index, array))

Diferencia entre la estructura for y el m茅todo some

Los m茅todos de arrays nos permiten realizar algoritmos con una menor cantidad de l铆neas que una estructura for, con un resultado igual o parecido.

Por ejemplo, hagamos un algoritmo que indique si en un array existe al menos un n煤mero par.

Si utilizamos la estructura for, necesitaremos una variable de tipo booleana con el valor false e iterar hasta que la condici贸n se cumpla. La palabra reservada break rompe el ciclo repetitivo.

const numbers = [1, 2, 3, 5]

let respuesta = false
for (let i=0; i < numbers.length; i++){
    const element = numbers[i]
    if (element % 2 === 0) {
        respuesta = true
        break
    }
}

console.log(respuesta) // true

Con el m茅todo some solo debemos establecer la funci贸n que indique la condici贸n a cumplir para cada elemento.

const numbers = [1, 2, 3, 5]

const respuesta = numbers.some(item => item % 2 === 0)
console.log(respuesta) // true

Contribuci贸n creada por: Andr茅s Guano.

Aportes 33

Preguntas 16

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Dejo el array de fechas del ejercicio 馃槂

const dates = [
  {
    startDate: new Date(2021, 1, 1, 10),
    endDate: new Date(2021, 1, 1, 11),
    title: "Cita de trabajo",
  },
  {
    startDate: new Date(2021, 1, 1, 15),
    endDate: new Date(2021, 1, 1, 15, 30),
    title: "Cita con mi jefe",
  },
  {
    startDate: new Date(2021, 1, 1, 20),
    endDate: new Date(2021, 1, 1, 21),
    title: "Cena",
  },
];

Resumen
.
Este m茅todo nos devuelve true o false s铆 al menos 1 elemento de nuestro array cumple con la condici贸n.

const array = [1, 2, 3, 4, 5];

const even = (element) => element % 2 === 0;

console.log(array.some(even));
// resultado true

Al d铆a de hoy (21/9/21), la librer铆a de fechas date-fns esta en la versi贸n 2.24.0 y funciona correctamente el ejercicio. S铆 vienes del futuro, recuerda instalar la versi贸n que usa el profe para evitar incompatibilidades si es que la sintaxis o algo de la misma librer铆a ha sido modificada.

Soy nuevo en JS y este profesor es muy bueno, cada que termina una clase me siento con superpoderes.
Hasta me dan ganas de hacer un calendario o agenda v铆a web. 馃槃

Record茅 los corajes de Freddy al ver a programadores usando alguna herramienta externa para saber si un n煤mero es par o impar.

Para los que no le funciona la librer铆a
Aqu铆 mi versi贸n sin uso de ella:

// exo 2

const dates = [
    {
      startDate: new Date(2021, 1, 1, 10),
      endDate: new Date(2021, 1, 1, 11),
      title: "Cita de trabajo",
    },
    {
      startDate: new Date(2021, 1, 1, 15),
      endDate: new Date(2021, 1, 1, 15, 30),
      title: "Cita con mi jefe",
    },
    {
      startDate: new Date(2021, 1, 1, 20),
      endDate: new Date(2021, 1, 1, 21),
      title: "Cena",
    },
];

// My try

const obj1 = {
    startDate: new Date(2021, 1, 1, 10),
    endDate: new Date(2021, 1, 1, 11),
    title: "Cita de trabajo",
}

const obj2 = {
    startDate: new Date(2021, 1, 1, 10),
    endDate: new Date(2021, 1, 1, 13),
    title: "Cita de trabajo",
}

const datesOverlap = (start1, end1, start2, end2) => {
    if (start1 <= end2 && start2 <= end1) return true
    else return false;
}

//check

datesOverlap(obj1.startDate, obj1.endDate, obj2.startDate, obj2.endDate);

// exo

const newAppointment = {
    startDate: new Date(2021, 1, 1, 8),
    endDate: new Date(2021, 1, 1, 9, 30),
};
const newAppointment1 = {
    startDate: new Date(2021, 1, 1, 10),
    endDate: new Date(2021, 1, 1, 13),
};

const checkNewAppointmentAgainstDates = (newDates) => {
    return dates.some(item => {
        return datesOverlap(item.startDate, item.endDate, newDates.startDate, newDates.endDate)
    })
}

checkNewAppointmentAgainstDates(newAppointment);
checkNewAppointmentAgainstDates(newAppointment1);

Esta es una alternativa sino puedes hacer uso de la API:

Les dejo el encabezado del ejercicio para que se les facilite mas:

const dates = [
    {
      startDate: new Date(2021, 1, 1, 10),
      endDate: new Date(2021, 1, 1, 11),
      title: "Cita de trabajo",
    },
    {
      startDate: new Date(2021, 1, 1, 15),
      endDate: new Date(2021, 1, 1, 15, 30),
      title: "Cita con mi jefe",
    },
    {
      startDate: new Date(2021, 1, 1, 20),
      endDate: new Date(2021, 1, 1, 21),
      title: "Cena",
    },
  ];
const newAppointment = {
    startDate: new Date(2021, 1, 1, 8),
    endDate: new Date(2021, 1, 1, 9, 30),
  };
  

Some: Si alguno de esos elementos cumple con alguna condicional, regresa -> True o False

No importa si todos los cumple o solo uno (Almenos alguno)

Si alguno cumple regresa: True, si ninguno cumple con la condicion regresa: False

Este m茅todo lo relaciono con el condicional OR si bien pueden tener usos super distintos, pero internamente es lo mismo, basta con que cumpla una sola condici贸n para ejecute la acci贸n en el caso de or, y en el caso de some para que devuelva true o false

Estoy trabajando desde windows 11, y yo instal茅 date-fns desde mi terminal git bash usando el comando del profe:

npm i date-fns

Por si a alguien le sirve, nunca se sabe.

const dates = [
    {
      startDate: new Date(2021, 1, 1, 10),
      endDate: new Date(2021, 1, 1, 11),
      title: "Cita de trabajo",
    },
    {
      startDate: new Date(2021, 1, 1, 15),
      endDate: new Date(2021, 1, 1, 15, 30),
      title: "Cita con mi jefe",
    },
    {
      startDate: new Date(2021, 1, 1, 20),
      endDate: new Date(2021, 1, 1, 21),
      title: "Cena",
    },
  ];

const newAppointment = {
    startDate: new Date (2021,1,1,8),
    endDate: new Date (2021,1,1,9,30),
};

const areIntervalsOverlapping = require('date-fns/areIntervalsOverlapping')

const isOverlap = (newDate) =>{
    return dates.some(date => {
        return areIntervalsOverlapping(
            {start:date.startDate, end:date.endDate},
            {start:newDate.startDate,end:newDate.endDate}
        )
    })
}
console.log(isOverlap(newAppointment));

Para poder usar la libreria de date-fns, con la sentencia import de ES6 modules, se tiene que agregar en el package.json, lo sgt:

{
	"type": "module"
}

y luego usar import

import {areIntervalsOverlapping} from 'date-fns'

const dates = [
    {
      startDate: new Date(2021, 1, 1, 10),
      endDate: new Date(2021, 1, 1, 11),
      title: "Cita de trabajo",
    },
    {
      startDate: new Date(2021, 1, 1, 15),
      endDate: new Date(2021, 1, 1, 15, 30),
      title: "Cita con mi jefe",
    },
    {
      startDate: new Date(2021, 1, 1, 20),
      endDate: new Date(2021, 1, 1, 21),
      title: "Cena",
    },
  ]


//fecha a agendar
const newAppointment = {
    startDate: new Date(2021, 1, 1, 10, 10),
    endDate: new Date(2021, 1, 1, 11, 30),
  }

const isOverlaping = (newDate) => {
    return dates.some(date => {
        return areIntervalsOverlapping(
            {start: date.startDate, end: date.endDate},
            {start: newDate.startDate, end: newDate.endDate})
    })
}

Por si no les sirve la libreria esta es una alternativa, como argumento del primer parametro se pasa el arreglo de las citas agendadas, y como segundo argumento deben de pasar el objeto con los datos de la cita que quieren verificar.
La estuve probando y creo no tiene fallas, si la tiene corrijanla por mi XD.

const verificar = function(agenda, cita){
    return agenda.some(item => (cita.startDate >= item.startDate && cita.startDate <= item.endDate) || (cita.endDate >= item.startDate && cita.endDate <= item.endDate));
}

M茅todo some: devuelve true o false si al menos un valor del array cumple la condici贸n.

const numbers = [1, 2, 3, 4];
const rta2 = numbers.some( item => item % 2 === 0);
console.log('With some', rta2);

Que ejercicio tan valioso. 隆Super pr谩ctico y 煤til! Muchas gracias Nico!

revisa si es par o impar y lo inyecta en su respectivo

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

const pares = [];
const impares = [];
for(let index = 0; numbers.length > index; index++){
const porcent = numbers[index]
if(porcent % 2 == 0){
pares.push(porcent)
}else{
impares.push(porcent)
}
}

console.log(鈥減ares鈥, pares)
console.log(鈥渋mpares鈥, impares)

para los que tienen este error se soluciona cambiando la extension de
.js a .cjs

var areIntervalsOverlapping = require(鈥榙ate-fns/areIntervalsOverlapping鈥)

este es el enlace:

const areIntervalsOverlapping = require('date-fns/areIntervalsOverlapping');

No estoy promocionando el ocio, pero鈥 podemos sacar de cosas buenas de algo que est谩 en una imagen o video y queremos sacar letras para luego editarlas.
Les recomiendo esta extensi贸n de chrome:

https://chrome.google.com/webstore/detail/copyfish-%F0%9F%90%9F-free-ocr-soft/eenjdnjldapjajjofmldgmkjaienebbj

muy buena clase.

Para el que no tenga la librer铆a de las fechas.
Se puede instalar as铆, en la terminal:

npm install date-fns --save
# or
yarn add date-fns

Lo instal茅 en Mac, sin problemas.
Saludos! 馃槃

comparto mi solucion al reto!

const items = [1,2,4,5,4,7,3,0,1,4,6,3,6,8,3,5,7,4,3,8,5,6,1,9, 10];
const rta2 = items.reduce((obj, item) => {
    if(item >= 0 && item <= 5) {
        obj['1-5'] += 1;
    } else if (item > 5 && item < 9) {
        obj['6-8'] += 1;
    } else {
        obj['9-10'] += 1;
    }
    return obj;
}, {'1-5': 0, '6-8' : 0, '9-10' : 0});

console.log(rta2);

const dates = [
    {
      startDate: new Date(2021, 1, 1, 10), //01/01/2021 10:00 am
      endDate: new Date(2021, 1, 1, 11), // 11:00 am
      title: "Cita de trabajo",
    },
    {
      startDate: new Date(2021, 1, 1, 15), // 03:00 pm
      endDate: new Date(2021, 1, 1, 15, 30), // 03:30 pm
      title: "Cita con mi jefe",
    },
    {
      startDate: new Date(2021, 1, 1, 20), // 08:00 pm
      endDate: new Date(2021, 1, 1, 21), // 09:00 pm
      title: "Cena",
    },
  ];

parece que en este caso el profe se complica m谩s de la cuenta.

mi .some en react


import { useState } from "react";
import "./App.css";

function App() {
  const [query, setQuery] = useState(false);

  const myArray = [
    {
      customerName: "Nicolas",
      total: 600,
      delivered: true,
    },
    {
      customerName: "Zulema",
      total: 120,
      delivered: true,
    },
    {
      customerName: "Santiago",
      total: 180,
      delivered: false,
    },
    {
      customerName: "Valentina",
      total: 600,
      delivered: true,
    },
  ];

  const totalDelivered = () => {
    const rta = myArray.some((item) => !item.delivered);
    setQuery(rta);
  };

  const handleSome = () => {
    totalDelivered();
  };

  const myFilter = (value) => {
    const newArray = value.filter((e) => !e.delivered);
    return newArray.map((product, index) => (
      <li className="li-same" key={index}>
        <h4>
          {product.customerName}_{product.total}
        </h4>
      </li>
    ));
  };

  return (
    <header className="App-header">
      <h1>veamos al m茅todo .some</h1>
      <section className="query">
        <button onClick={handleSome}>
          consultar si hay ventas sin entregar
        </button>
        {query && (
          <div className="module-query">
            <h5>estas son las ventas sin entregar</h5>
            <ul className="ul-same">{myFilter(myArray)}</ul>
          </div>
        )}
      </section>
    </header>
  );
}

export default App;


y mis apuntes de esta clase

buena clase

El m茅todo some() comprueba si al menos un elemento del array cumple con la condici贸n implementada por la funci贸n proporcionada.

const users = [
    { uid: 1, name: "John", age: 34 },
    { uid: 2, name: "Amy", age: 20 },
    { uid: 3, name: "camperCat", age: 10 },
];

const existe = users.some((user) => user.uid === 2);
console.log('Este valor es:', existe);

Estos m茅todos son hechos en 1 l铆nea y eso me gusta mucho 馃槂