Saya mencoba menerapkan solusi untuk menemukan data dari JSON berdasarkan tanggal di sini adalah data JSON

[
  {
        draw_date: "2021-06-30T00:00:00.000",
        winning_numbers: "24 29 50 65 66 14",
        multiplier: "4"
    },
    {
        draw_date: "2021-06-26T00:00:00.000",
        winning_numbers: "08 31 39 43 60 17",
        multiplier: "3"
    }
];

Saya telah menerapkan solusinya

const result = [
  {
        draw_date: "2021-06-30T00:00:00.000",
        winning_numbers: "24 29 50 65 66 14",
        multiplier: "4"
    },
    {
        draw_date: "2021-06-26T00:00:00.000",
        winning_numbers: "08 31 39 43 60 17",
        multiplier: "3"
    }
];
const date = result.find(data => data.draw_date == '2021-06-30T00:00:00.000')
console.log(date);

Tetapi solusinya hanya menemukan data dengan string tanggal yang tepat misalnya

2021-06-30T00:00:00.000

Jika saya mencari seperti ini

2021-06-30

Mendapatkan undefind

Ada ide? Tolong bantu.

0
Munish Kapoor 4 Juli 2021, 09:15

4 jawaban

Jawaban Terbaik

Anda dapat menggunakan includes seperti di bawah ini

const result = [
  {
        draw_date: "2021-06-30T00:00:00.000",
        winning_numbers: "24 29 50 65 66 14",
        multiplier: "4"
    },
    {
        draw_date: "2021-06-26T00:00:00.000",
        winning_numbers: "08 31 39 43 60 17",
        multiplier: "3"
    }
];
const date = result.find(data => data.draw_date.includes('2021-06-30'))
console.log(date);
1
Alireza Ahmadi 4 Juli 2021, 06:27

Ada perbedaan antara 2021-06-30T00:00:00.000 dan 2021-06-30 saat menggunakan operator persamaan (==). Alih-alih mencari, Anda memeriksa apakah kedua nilai itu sama, mana yang tidak.

Yang ingin Anda gunakan adalah indexOf.

const date = result.find(data => data.draw_date.indexOf('2021-06-30'))
console.log(date);
1
Kirubiel Shimeles 4 Juli 2021, 06:47

Tidak ada string == "2021-06-30" dalam data Anda. String pertama yang disebut draw_date adalah 2021-06-30T00:00:00.000, yang jelas bukan string yang sama.

Anda perlu menggunakan ekspresi untuk mencocokkan string yang dimulai dengan string tanggal yang dicari.

Tampaknya format tanggal telah ditentukan dengan baik, dan jika Anda dapat mengandalkannya, mungkin startsWith dapat membantu: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith

1
Alireza Ahmadi 4 Juli 2021, 23:57

Anda memanggil pemfilteran berdasarkan 2021-06-30T00:00:00.000, jika cocok dengan larik, Anda akan mendapatkan respons.

Untuk solusinya Anda dapat menggunakan kode di bawah ini:

const result = [
  {
        draw_date: "2021-06-30T00:00:00.000",
        winning_numbers: "24 29 50 65 66 14",
        multiplier: "4"
    },
    {
        draw_date: "2021-06-26T00:00:00.000",
        winning_numbers: "08 31 39 43 60 17",
        multiplier: "3"
    }
];
const date = result.find(data => data.draw_date == '2021-06-30T00:00:00.000' || data.draw_date.split("T")[0] == '2021-06-30');

Atau

cost date = result.find(data => data.draw_date.split("T")[0] == '2021-06-30');

Keluaran:

{draw_date: "2021-06-30T00:00:00.000", winning_numbers: "24 29 50 65 66 14", multiplier: "4"}

Alternatif:

  1. Anda dapat menggunakan includes yang dapat memeriksa apakah string cocok atau tidak
  2. Kami juga memiliki loadash(underscore.js) untuk mengambil dan mengatur JSON
1
Alireza Ahmadi 5 Juli 2021, 00:20