jsrosetta

Collections

Mảng (Array)

slice, concat của Node.js so với slice của Go, Vec của Rust, Array (value type) của Swift và ArrayList của Java.

Phiên bản tối thiểu
Node.js ≥ 12.20Go ≥ 1.21Rust ≥ 1.58Swift ≥ 2.0Java ≥ 25
Đã chạy thử trên
Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1

Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.

Trong Node.js, Array là kiểu tham chiếu linh hoạt với đủ method tiện dụng. Go dùng slice — một view (con trỏ, độ dài, sức chứa) trỏ vào một mảng gốc — nên khi cắt, sao chép hay nối, bạn cần để ý xem thao tác đó có chia sẻ vùng nhớ với mảng gốc hay không. Rust có Vec<T> sở hữu dữ liệu và slice tham chiếu (&[T]) mượn dữ liệu, biên giới sở hữu do compiler kiểm tra. Array của Swift là value type: gán hay truyền là tạo bản sao logic (copy-on-write), không chia sẻ ngầm như JS. Java không có kiểu mảng co giãn sẵn — int[] cố định kích thước — nên ví dụ dưới dùng ArrayList.

Sao chép và lấy một đoạn (slice)

const array = [1, 2, 3, 4, 5]
console.log(array)
 
const clone = array.slice(0) // slice() luôn trả về mảng mới
console.log(clone)
 
const sub = array.slice(2, 4)
console.log(sub) // [3, 4]

Nối và chèn vào đầu mảng

const concatenated = clone.concat([6, 7])
console.log(concatenated) // [1, 2, 3, 4, 5, 6, 7]
 
const prepended = [-2, -1, 0].concat(concatenated)
console.log(prepended) // [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]

Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#arrays