Nếu bạn đã từng sử dụng phương pháp phân tách của JavaScript, rất có thể bạn đã gặp phải lỗi sau: TypeError: Không thể đọc thuộc tính ‘split’ của undefined. Có một số lý do tại sao bạn sẽ nhận được lỗi này. Rất có thể đó chỉ là sự hiểu nhầm cơ bản về cách hoạt động của phân tách và cách lặp lại

< font style = "vertical-align: inherit;"> Bạn đang xem: typeerror: không thể đọc thuộc tính ‘split’ của undefined

Nếu bạn ‘ đã từng sử dụng phương pháp split của JavaScript, rất có thể bạn đã gặp phải lỗi sau: TypeError: Không thể đọc thuộc tính 'split' của undefined .

< p> Có một số lý do tại sao bạn sẽ nhận được lỗi này. Rất có thể đó chỉ là sự hiểu nhầm cơ bản về cách hoạt động của split và cách lặp lại qua các mảng.

Ví dụ: nếu bạn cố gắng gửi mã sau cho Hãy tìm Từ dài nhất trong thử thách chuỗi :

  function findLongestWord (str) {
  for (let i = 0; i & lt; str.length; i ++) {
    const array = str.split ("");
    array [i] .split ("");
  }
}

findLongestWord ("Cáo nâu nhanh nhẹn nhảy qua con chó lười");  

nó sẽ tạo ra lỗi TypeError: Không thể đọc thuộc tính 'split' của không xác định . < / p>

Phương thức split

Khi split được gọi trên một chuỗi, nó sẽ tách chuỗi thành chuỗi con dựa trên dấu phân cách được chuyển vào dưới dạng đối số. Nếu một chuỗi trống được truyền dưới dạng đối số, thì split coi mỗi ký tự là một chuỗi con. Sau đó, nó trả về một mảng chứa các chuỗi con:

  const testStr1 = "Kiểm tra thử nghiệm 1 2";
const testStr2 = "cupcake pancake";
const testStr3 = "Thứ nhất, Thứ hai, Thứ ba";

testStr1.split (""); // ['Kiểm tra', 'kiểm tra', '1', '2']
testStr2.split (""); // ['c', 'u', 'p', 'c', 'a', 'k', 'e', ​​'', 'p', 'a', 'n', 'c', 'a', 'k', 'e']
testStr3.split (","); // ['Đầu tiên', 'Thứ hai', 'Thứ ba']
 

Hãy xem MDN để biết thêm chi tiết về split .

Vấn đề được giải thích bằng các ví dụ

Biết phương thức split trả về gì và có bao nhiêu chuỗi con bạn có thể mong đợi là chìa khóa để giải quyết thách thức này .

XEM THÊM  Cách gọi lại email trong Gmail: Hướng dẫn đầy đủ cho năm 2022 - email nhớ lại không gian làm việc của google

Hãy xem lại đoạn mã ở trên và xem tại sao nó không hoạt động như mong đợi:

  function findLongestWord (str) {
  for (let i = 0; i & lt; str.length; i ++) {
    const array = str.split ("");
    array [i] .split ("");
  }
}

findLongestWord ("Con cáo nâu nhanh nhẹn nhảy qua con chó lười biếng");
 

Việc tách str thành một mảng như thế này ( const array = str.split (""); ) hoạt động như mong đợi và trả về ["The", "quick", "brown", "fox", "jump", "over", "the", "lazy", "dog"] .

< p> Nhưng hãy xem xét kỹ hơn vòng lặp for . Thay vì sử dụng độ dài của mảng làm điều kiện để lặp lại i , str.length được sử dụng thay thế.

str là “Con cáo nâu nhanh nhẹn nhảy qua con chó lười” và nếu bạn đăng nhập str.length vào bảng điều khiển, bạn sẽ nhận được 44.

Câu lệnh cuối cùng trong phần nội dung của vòng lặp for là nguyên nhân gây ra lỗi: array [i] .split (""); . Độ dài của array là 9, vì vậy i sẽ nhanh chóng vượt quá độ dài tối đa của array :

  function findLongestWord (str) {
  for (let i = 0; i & lt; str.length; i ++) {
    const array = str.split ("");
    console.log (array [i]);
    // array [0]: "The"
    // array [1]: "nhanh"
    // mảng [2]: "màu nâu"
    // ...
    // array [9]: "dog"
    // array [10]: undefined
    // array [11]: undefined
  }
}

findLongestWord ("Con cáo nâu nhanh nhẹn nhảy qua con chó lười biếng");
 

Gọi array [i] .split (""); để chia từng chuỗi thành các chuỗi ký tự là một cách tiếp cận hợp lệ, nhưng nó sẽ ném TypeError: Không thể đọc thuộc tính 'split' của undefined khi nó được truyền undefined .

Cách giải Tìm từ dài nhất trong chuỗi bằng split

Hãy xem nhanh một số mã giả để biết cách giải quyết vấn đề này:

  1. Tách str thành một mảng các từ riêng lẻ
  2. Tạo một biến để theo dõi độ dài từ lớn nhất
  3. Lặp lại mảng các từ và so sánh độ dài của mỗi từ với biến được đề cập ở trên
  4. Nếu độ dài của từ hiện tại lớn hơn độ dài của từ được lưu trữ trong biến, hãy thay thế giá trị đó bằng độ dài từ hiện tại
  5. Sau khi độ dài của mỗi từ được so sánh với biến độ dài từ tối đa, hãy trả về số đó từ hàm

Đầu tiên, hãy tách str thành một mảng các từ riêng lẻ:

  function findLongestWordLength (str) {
  const array = str.split ("");
}  

Tạo một biến để theo dõi độ dài từ dài nhất và đặt nó thành 0:

  function findLongestWordLength (str ) {
  const array = str.split ("");
  để maxWordLength = 0;
}  

Bây giờ giá trị của array ["The", "quick", "brown", "fox", "jump", 'over', 'the', 'lazy', 'dog'] , bạn có thể sử dụng array.length trong vòng lặp for :

  hàm findLongestWordLength (str) {
  const array = str.split ("");
  để maxWordLength = 0;
  
  for (let i = 0; i & lt; array.length; i ++) {
    
  }
}  

Lặp lại mảng từ và kiểm tra độ dài của mỗi từ. Hãy nhớ rằng các chuỗi cũng có một phương thức length mà bạn có thể gọi để dễ dàng nhận được độ dài của một chuỗi:

  function findLongestWordLength (str) {
  const array = str.split ("");
  cho maxLength = 0;
  
  for (let i = 0; i & lt; array.length; i ++) {
    mảng [i] .length;
  }
}  

Sử dụng câu lệnh if để kiểm tra xem độ dài của từ hiện tại ( array [i] .length ) có lớn hơn < mã> maxLength . Nếu vậy, hãy thay thế giá trị của maxLength bằng array [i] .length :

  function findLongestWordLength ( str) {
  const array = str.split ("");
  cho maxLength = 0;
  
  for (let i = 0; i & lt; array.length; i ++) {
    if (array [i] .length & gt; maxLength) {
      maxLength = array [i] .length;
    }
  }
}  

Cuối cùng, trả về maxLength ở cuối hàm, sau vòng lặp for :

 < code class = "language-js"> function findLongestWordLength (str) {
  const array = str.split ("");
  cho maxLength = 0;
  
  for (let i = 0; i & lt; array.length; i ++) {
    if (array [i] .length & gt; maxLength) {
      maxLength = array [i] .length;
    }
  }
    
  trả về maxLength;
}  


Xem thêm những thông tin liên quan đến chủ đề typeerror: không thể đọc thuộc tính ‘split’ của undefined

How to Fix Uncaught TypeError: Cannot read properties of undefined

  • Tác giả: Quick Code Academy
  • Ngày đăng: 2022-02-10
  • Đánh giá: 4 ⭐ ( 4602 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Uncaught TypeError: Cannot read property
    If you’re a JavaScript developer, you’ve probably seen this error more than you care to admit. This one occurs in Chrome when you read a property or call a method on an undefined object. You can test this very easily in the Chrome Developer Console.
    ✅ Solved: ERROR TypeError: Cannot read property title of undefined

Cách kiểm tra xem thuộc tính đối tượng JavaScript có không được xác định hay không

  • Tác giả: tech-wiki.online
  • Đánh giá: 3 ⭐ ( 5464 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

ConnectedRouter TypeError: Không thể đọc thuộc tính ‘công văn’ của không xác định

  • Tác giả: vi.pays-tarusate.org
  • Đánh giá: 5 ⭐ ( 1892 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: đang thử React / Redux theo hướng dẫn ở Phần 3: https://tighten.co/blog/react-101-routing-and-auth. Phần 1 và 2 đã rất tuyệt vời cho đến phần 3, nơi tôi gặp lỗi trong …

Optional chaining trong JavaScript

  • Tác giả: completejavascript.com
  • Đánh giá: 3 ⭐ ( 3383 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Optional chaining trong JavaScript là cách an toàn để truy cập vào thuộc tính của object lồng nhau, thậm chí thuộc tính không tồn tại. Sau đây là những kiến thức cơ bản về ?.

Cách fix lỗi Uncaught TypeError: Cannot read property of undefined trong Javascript

  • Tác giả: hoccode.org
  • Đánh giá: 3 ⭐ ( 7035 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn chi tiết cách fix lỗi Uncaught TypeError: Cannot read property ‘blah.blah.blah…’ of undefined trong Javascript.

Top 10 lỗi javascript thường gặp và cách phòng tránh(P2)

  • Tác giả: viblo.asia
  • Đánh giá: 3 ⭐ ( 1482 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: 6. TypeError: ‘undefined’ is not a function

Những lỗi JavaScript thường gặp và cách fix

  • Tác giả: hamsa.life
  • Đánh giá: 4 ⭐ ( 3718 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Xem thêm các bài viết khác thuộc chuyên mục: WordPress

XEM THÊM  Bản dịch tiếng Hà Lan - Linguee - dịch chào mừng đến tiếng Hà Lan

By DEVTEAM