Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Meniru Fungsi Zip Python dalam JavaScript?

Bagaimanakah Saya Boleh Meniru Fungsi Zip Python dalam JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-28 18:58:10531semak imbas

How Can I Replicate Python's Zip Function in JavaScript?

Javascript Equivalents of Python's Zip Function

Fungsi zip Python boleh direplikasi dalam JavaScript menggunakan pelbagai pendekatan. Mari terokai dua kaedah biasa:

1. Pemetaan Tatasusunan

Kaedah ini menganggap tatasusunan input adalah sama panjang dan melibatkan pemetaan tatasusunan pertama untuk mencipta pasangan dengan elemen yang sepadan daripada tatasusunan lain.

function zip(...arrays) {
  return arrays[0].map((_, i) => arrays.map((array) => array[i]));
}

Contoh:

const array1 = [1, 2, 3];
const array2 = ['a', 'b', 'c'];
const array3 = [4, 5, 6];

const zippedArray = zip(array1, array2, array3);

console.log(zippedArray); // [[1, 'a', 4], [2, 'b', 5], [3, 'c', 6]]

2. Array.apply dan Array Mapping

Kaedah ini mengendalikan kedua-dua tatasusunan yang sama dan tidak sama panjang, mengembalikan tidak ditentukan untuk nilai yang tiada.

function zip(...arrays) {
  const longest = arrays.reduce((a, b) => (a.length > b.length ? a : b), []);

  return Array.apply(null, Array(longest.length)).map((_, i) =>
    arrays.map((array) => array[i])
  );
}

Contoh:

const array1 = [1, 2, 3];
const array2 = ['a', 'b'];
const array3 = [4, 5, 6];

const zippedArray = zip(array1, array2, array3);

console.log(zippedArray); // [[1, 'a', 4], [2, 'b', 5], [3, undefined, 6]]

Nota: Jika anda menggunakan mana-mana kaedah di atas dengan tatasusunan panjang yang tidak sama, perlu diingat bahawa ia bukan songsang mereka sendiri. Untuk meniru simpulan bahasa Python(*[...]), gunakan zip.apply(ini, [...]).

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meniru Fungsi Zip Python dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn