2016-01-19 25 views
91

Tôi đang làm việc với Javascript (ES6)/FaceBook phản ứng và cố gắng lấy 3 phần tử đầu tiên của một mảng có kích thước khác nhau. Tôi muốn làm tương đương với Linq mất (n).Cách lấy số N đầu tiên của các phần tử từ một mảng

Trong file Jsx của tôi, tôi đã điều sau đây:

var items = list.map(i => { 
    return (
    <myview item={i} key={i.id} /> 
); 
}); 

Sau đó, để có được 3 mục đầu tiên tôi đã cố gắng

var map = new Map(list); 
    map.size = 3; 
    var items = map(i => { 
     return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />); 
    }); 

này đã không làm việc như bản đồ không có chức năng thiết lập .

Bạn có thể trợ giúp không?

+0

Có lẽ tôi là sự hiểu lầm vấn đề, nhưng tại sao không sử dụng một cái gì đó như 'list.slice (0, 3);' và sau đó lặp lại điều đó không? –

+0

Tại sao bạn muốn sử dụng bản đồ? Nếu tôi hiểu yêu cầu của bạn một cách chính xác, bạn chỉ có thể sử dụng slice để lấy các phần tử n đầu tiên. –

+0

Nếu giáo viên được yêu cầu sử dụng bản đồ? :) Tôi xin lỗi nếu đây là một câu hỏi hợp pháp, nhưng nó chỉ cảm thấy như một bài tập về nhà. – diynevala

Trả lời

89

Tôi tin rằng những gì bạn đang tìm kiếm là:

// ...inside the render() function 

var size = 3; 
var items = list.slice(0, size).map(i => { 
    return <myview item={i} key={i.id} /> 
} 

return (
    <div> 
    {items} 
    </div> 
) 
155

Để có được n yếu tố đầu tiên của một mảng, sử dụng

array.slice(0, n); 
+0

Cảm ơn, đơn giản và chính xác. – user1892203

4

Đừng cố gắng làm điều đó bằng cách sử dụng chức năng bản đồ. Hàm bản đồ nên được sử dụng để ánh xạ các giá trị từ vật này sang vật khác. Khi số lượng kết quả đầu vào và đầu ra.

Trong trường hợp này, hãy sử dụng chức năng lọc cũng có sẵn trên mảng. Chức năng lọc được sử dụng khi bạn muốn chọn lọc lấy các giá trị gia công các tiêu chí nhất định. Sau đó, bạn có thể viết mã của bạn như

var items = list 
      .filter((i, index) => (index < 3)) 
      .map((i, index) => { 
        return (
        <myview item={i} key={i.id} /> 
        ); 
       }); 
+1

Bạn hoàn toàn chính xác, nhưng ngữ nghĩa bạn nên sử dụng bộ lọc để * đầu tiên * lọc xuống tập hợp các phần tử, sau đó, ánh xạ bộ lọc xuống nếu bạn đang sử dụng phương pháp này. – Chris

+1

Chức năng lọc sẽ đi qua tất cả các phần tử trong mảng, trong khi lát cắt sẽ không, vì vậy tốt hơn nên sử dụng slice, đúng không? – elQueFaltaba

0

này có thể gây ngạc nhiên nhưng length tài sản của một mảng không chỉ được sử dụng để có được số của mảng nhưng cũng có thể ghi và có thể được sử dụng để đặt độ dài của mảng MDN link

Nếu không cần mảng hiện tại nữa và bạn không quan tâm đến bất biến hoặc không muốn cấp phát bộ nhớ tức là cho trò chơi nhanh nhất là

arr.length = n 

để trống một mảng

arr.length = 0 
Các vấn đề liên quan