Rumah  >  Soal Jawab  >  teks badan

javascript - masalah traversal js?

Saya perlu mencari sama ada terdapat nilai yang berbeza dalam tatasusunan Jika ia wujud, jalankan fungsi x Jika ia tidak wujud, jalankan fungsi y. Tetapi menggunakan gelung for, jika ia menemui perkara yang sama pada mulanya, ia akan melaksanakan y, dan ia tidak akan melaksanakan x sehingga ia menemui yang berbeza Bagaimana untuk membuatnya melaksanakan fungsi yang sepadan selepas melintasi mereka semua?

大家讲道理大家讲道理2668 hari yang lalu685

membalas semua(5)saya akan balas

  • 伊谢尔伦

    伊谢尔伦2017-06-30 09:59:33

    Gunakan Array.prototype.every() atau Array.prototype.some()

    balas
    0
  • PHP中文网

    PHP中文网2017-06-30 09:59:33

    1. Gunakan kaedah tatasusunan ES5, yang melaksanakan fungsi pada setiap elemen tatasusunan apabila semua hasil pelaksanaan fungsi adalah benar, jika tidak, ia akan berakhir lebih awal dan menjadi palsu

    2 Menggunakan gelung for, anda memerlukan pembolehubah untuk menyimpan nilai elemen pertama tatasusunan, dan kemudian mulakan gelung Apabila anda mendapati terdapat elemen dalam tatasusunan yang tidak sama dengan pembolehubah anda boleh menentukan bahawa sudah tiba masanya untuk melaksanakan X (ini Anda boleh memecahkannya apabila); jika tidak, tiada nilai yang berbeza dalam tatasusunan, laksanakan Y

    Malah, kaedah 1 juga memerlukan pembolehubah ini

    3. Gunakan kaedah tatasusunan ES5.mengurangkan, yang menerima dua elemen tatasusunan pada satu masa Anda boleh membandingkan secara langsung sama ada kedua-dua elemen itu sama selagi ia tidak sama, ia adalah Y.

    [1,1,1,1,4,1].reduce(function (a,b) {
        console.log(a,b, a === b);
        // 返回后一个元素
        return b;
    })

    Tetapi kaedah ini tidak boleh putus

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-30 09:59:33

    Tambah pembolehubah sebelum untuk, ubahnya jika anda menemuinya dalam untuk, dan kemudian jika selepas untuk

    balas
    0
  • 怪我咯

    怪我咯2017-06-30 09:59:33

    Jika anda menggunakan gelung for, anda perlu menentukan pembolehubah di luar for sebagai bendera:

    const arr = [1, 2, 3, 5, 6, 6 , 7];
    let has = false;
    for(let i = 0; i < arr.length; i++) {
        if (arr.indexOf(arr[i]) !== i) {
            has = true;
            break;
        }
    };
    if (has) {
        console.log('x');
    } else {
        console.log('y');
    }

    Jika ES6 disokong, anda boleh menggunakan Set untuk menyahduplikasi tatasusunan, dan kemudian menentukan panjang dua tatasusunan:

    const arr = [1, 2, 3, 5, 6, 6, 7];
    const arr1 = Array.from(new Set(arr));
    console.log(arr.length === arr1.length);

    balas
    0
  • 欧阳克

    欧阳克2017-06-30 09:59:33

    Penerangan tentang "ada nilai yang berbeza" agak kabur. Pemahaman saya ialah terdapat nilai dalam tatasusunan yang berbeza daripada nilai lain.

    1. rreeee
    2. rreeee
    3. rreeee

    balas
    0
  • Batalbalas