javascript - masalah traversal js?
大家讲道理
大家讲道理 2017-06-30 09:57:33
0
5
679

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?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(5)
伊谢尔伦

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

Ty80

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

伊谢尔伦

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

刘奇

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);
学霸

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!