7 mẹo trong JavaScript cực kỳ hữu ích bạn nên biết

7 mẹo trong JavaScript cực kỳ hữu ích bạn nên biết

Được đăng vào 17/03/2023 17:00 bởi Duy Nguyễn.

1 phút đọc
303 lượt xem

Tôi sẽ giả sử tôi đang là một người bán hàng. Và tôi sẽ sử dụng các kỹ thuật trong Javascript để có thể cải thiện hiệu quả công việc bán hàng nha.

🔄️ Hoán đổi các biến

Trong một cách thông thường, bạn sẽ hoán đổi dữ liệu 2 biến như thế nào? Hẳn là bạn sẽ sử dụng một biến tạm để có thể trao đổi như ví dụ dưới đây, tôi có một chiếc bánh hamburger và bạn có sô cô la, chúng ta có thể đổi đồ ăn được không?
let myFood = '🍔'
let yourFood = '🍫'
let tempFoot = myFood

myFood = yourFood
yourFood = tempFoot
console.log(myFood, yourFood) // 🍫 🍔
Tuy nhiên với Javascript, bạn có thế hoán đổi hai hoặc nhiều biến khác nhau mà không cần dùng một biến tạm nữa. Và cách giải quyết này rất là đơn giản luôn.
let myFood = '🍔'
let yourFood = '🍫'

;[ myFood, yourFood ] = [ yourFood, myFood ]
console.log(myFood, yourFood) // 🍫 🍔
Thấy chứ. Dễ quá đúng không nào ? 😁

☢️ Hãy ngừng viết if…else đi

Hãy cho rằng tôi cần tra cứu giá của một loại thực phẩm theo tên của nó. Và tôi sẽ sử dụng if...else để có thể so sánh. Nhưng nếu đống thực phẩm đó tận hơn 100 sản phẩm. Tôi nghỉ sẽ hơi mỏi tay đấy. 😕
Đây là đoạn code ví dụ:
const getPriceByName = (name) => {
  if (name === '🍔') {
    return 30
  } else if (name === '🍨') {
    return 20
  } else if (name === '🍿') {
    return 10
  } else if ...
}

console.log(getPriceByName('🍔')) // 30
Hoặc tôi có thể loại bỏ những dòng if...else vô nghĩa này. Và sử dụng một object để có thể lưu đống thực phẩm này lại và truy cập nhanh hơn.
const getPriceByName = (name) => {
  const foodMap = {
    '🍔': 30,
    '🍨': 20,
    '🍿': 10,
    // You can add new food here
    // ...
  }

  return foodMap[ name ]
}

console.log(getPriceByName('🍔')) // 30
Chà !!! Nhìn đi. Dễ hiểu đúng không nào 👌

💡 Sử dụng Object.entries một cách thông minh

Bây giờ nếu bạn kinh doanh thêm một sản phẩm trong cửa hàng của mình. Bạn sẽ thêm tên và giá của nó vào đúng không ?
const foodMap = {
  '🍔': 30,
  '🍨': 20,
  '🍿': 10,
  '🍫': 5
}
// pay attention here
Object.prototype['🌭'] = 40
Dưới đây là cách in ra giá của các sản phẩm đó. Và đáng tiếc rằng 🌭 cũng được in ra, đúng ra nó không nên ở đó
// ❌
for (const key in foodMap) {
  console.log(key, foodMap[ key ])
}
Cách hiệu quả hơn trong trường hợp này
Khi sử dụng Object.entries ta có thể hai điểm mạnh đó là:
  1. Thuộc tính trên object prototypes không được in ra
  1. Ta có thể lấy được keyvalue trực tiếp, thay vì phải sử dụng obj[key]
// ✅
Object.entries(foodMap).forEach(([ key, value ]) => {
   console.log(key, value) 
})

🦀 Làm phẳng một mảng

Tôi đã không dọn dẹp thức ăn của mình trong một thời gian. Chúng được sắp xếp trong nhiều giỏ và đó là một chút lộn xộn, làm thế nào tôi có thể đặt chúng vào một giỏ?
const foods = [ [ '🍔', [ '🍫' ] ], [ '🍨', [ '🍿', [ '🍵' ] ] ] ]
Cách đầu tiên tôi sẽ sử dụng
const flattenFoods = (foods) => {
  return foods.reduce((res, food) => {
    return res.concat(Array.isArray(food) ? flattenFoods(food) : food)
  }, [])
}

console.log(flattenFoods(foods)) // ['🍔', '🍫', '🍨', '🍿', '🍵']
Cách thứ hay tôi hay sử dụng
Cách trên tôi cảm thấy quá phức tạp và khiến tôi trầm cảm, tôi nghĩ nên có một cách đơn giản hơn.
Trong mdn web docs, phương thức flat() tạo một mảng mới với các tất cả các phần tử của mảng con được nổi vào đó bằng sử dụng đệ quy cho đến độ sâu chỉ định.
foods.flat(Infinity) // ['🍔', '🍫', '🍨', '🍿', '🍵']

🧮 Tính tổng giá cả hàng hoá

Hiện tại, một trong những khách hàng của tôi đã mua một lượng lớn thực phẩm và tôi cần tính chính xác số tiền anh ta sẽ trả cho tôi. Đó là rất nhiều tiền.
Cách đầu tiên
const foods = [
  {
    name: '🍔',
    price: 30,
    amount: 10,
  },
  {
    name: '🍨',
    price: 20,
    amount: 3,
  },
  {
    name: '🍿',
    price: 10,
    amount: 5,
  },
  {
    name: '🍵',
    price: 5,
    amount: 9,
  },
]

let sum = 0
foods.forEach((food) => {
  sum += food.price * food.amount
})
console.log(sum) // 455
Cách mà tôi sẽ sử dụng
Trên thực tế reduce() có thể nhanh chóng giúp tôi lấy được tiền, nó khiến mọi thứ trông thật đơn giản và hài hòa, chỉ cần một dòng mã là xong.
const foods = [
  {
    name: '🍔',
    price: 30,
    amount: 10,
  },
  {
    name: '🍨',
    price: 20,
    amount: 3,
  },
  {
    name: '🍿',
    price: 10,
    amount: 5,
  },
  {
    name: '🍵',
    price: 5,
    amount: 9,
  },
]

let sum = foods.reduce((res, food) => res += food.price * food.amount, 0)

console.log(sum) // 455

📑 Sử dụng “console.table()”

Tôi thường sử dụng console.log() để in một số thông tin, nhưng nó không rõ ràng và ngắn gọn như bảng.
const foods = [
  {
    name: '🍔',
    price: 30.89,
    group: 1,
  },
  {
    name: '🍨',
    price: 20.71,
    group: 1,
  },
  {
    name: '🍿',
    price: 10.31,
    group: 2,
  },
  {
    name: '🍵',
    price: 5.98,
    group: 2,
  },
]
console.log(foods)
Tại sao ta lại không thử console.table()
Quào, nó thật trực quan, đơn giản và rõ ràng.

↗️ Thủ thuật làm tròn

Để trả lại cho người tiêu dùng, hôm nay cửa hàng của chúng tôi đang thực hiện chương trình khuyến mãi giảm giá tất cả thực phẩm và xóa số thập phân, tôi cần sử dụng Math.floor()để tính giá cuối cùng của thực phẩm.
Vậy có cách nào đơn giản hơn không? Thật ra là có đó là sử dụng toán tử ~~. Bạn xem chi tiết tại đây.
const foods = [
  {
    name: '🍔',
    price: 30.89
  },
  {
    name: '🍨',
    price: 20.71
  },
  {
    name: '🍿',
    price: 10.31
  },
]
const discountedFoods = foods.map((it) => {
  return {
    name: it.name,
    price: ~~it.price
  }
})

console.log(discountedFoods)

🌟 Kết thúc

Qua những mẹo mà mình hướng dẫn cho các bạn, mong các bạn sẽ hiểu hơn và có thể áp dụng vào trong dự án của các bạn. See yah 🤌.
Tags: codetipjavascript
Những Bài Viết Liên Quan:
Kinh nghiệm debug của một thằng dev "lâu năm"
1 phút đọc
303 lượt xem

31/08/2021 10:22

Bạn có muốn biết không ?

Viết thuật toán sắp xếp nhanh (Quick Sort Algorithm) bằng JavaScript
1 phút đọc
243 lượt xem

17/03/2023 04:00

Trong hướng dẫn này, bạn sẽ học cách viết thuật toán sắp xếp nhanh (Quick Sort Algorithm) bằng JavaScript và khám phá các khái niệm chính đằng sau thuật toán.

Sử dụng ChatGPT vào Visual Studio Code nhờ Extension này
1 phút đọc
953 lượt xem

03/03/2023 11:00

Sử dụng ChatGPT để hỗ trợ việc code của bạn ngay trong VSCode một cách hiệu quả