2016-10-28 22 views
27

Tôi có một mảng như dưới đâyTìm đối tượng bằng tài sản của mình trong mảng của các đối tượng với cách góc

var myArray = [{'id':'73','name':'john'},{'id':'45','name':'Jass'}, etc.] 

Bây giờ tôi có một id 73 làm thế nào để chọn đối tượng đặc biệt này từ mảng. Tôi thấy tôi có thể làm điều này trong jQuery dễ dàng với grep Có bất kỳ góc cạnh nào làm việc này không?

Vì hầu hết người dùng phát triển ứng dụng có góc luôn nhận dữ liệu từ mảng đối tượng (chủ yếu cho bảng) nên có chức năng trợ giúp cho điều này?

Để tôi có thể thay đổi dữ liệu của hàng bằng ID của hàng bằng cách cập nhật mảng đối tượng.

Tôi không muốn ràng buộc điều này trong chế độ xem. Tôi muốn thao tác dữ liệu và cập nhật chức năng withing dữ liệu.

Ví dụ. Tôi có một bảng liệt kê. Nếu người dùng cuối chỉnh sửa một hàng từ bảng tôi có ID của đối tượng để sau khi người dùng cuối nhấn lưu, tôi cần cập nhật mảng và sau đó quay lại danh sách bảng.

+0

@JaredSmith Tôi đang tìm bất kỳ chức năng helper góc (như angular.isNumber) cho điều này, không mặc định javascript phương pháp đối tượng mảng. – rram

+0

không có ý nghĩa gì cả. Tại sao bạn cần một hàm trợ giúp khung công tác để thay thế một phương thức gốc được hỗ trợ tất cả cách quay lại IE 9? Trừ khi bạn đưa ra một lý do khác, nó chỉ đi qua như một vấn đề XY http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem. –

+0

Tôi có thể hiểu tại sao bạn không muốn bao gồm jquery nếu bạn đã sử dụng góc cạnh, nhưng '.filter' là cả bản địa và được hỗ trợ tốt. Nếu bạn có thể đưa ra lý do thuyết phục tại sao góc cạnh và góc cạnh, ** phải ** được sử dụng để giải quyết vấn đề này, tôi sẽ rút lại phiếu bầu. –

Trả lời

48

bạn có thể sử dụng của góc filter https://docs.angularjs.org/api/ng/filter/filter

trong điều khiển của bạn:

$filter('filter')(myArray, {'id':73}) 

hoặc trong HTML của bạn

{{ myArray | filter : {'id':73} }} 
+0

Cảm ơn +1 Tôi đã nghĩ đến việc áp dụng bộ lọc chỉ ở chế độ xem có đánh dấu, nhờ ý tưởng sử dụng nó trong bộ điều khiển. – rram

+4

Chỉ cần một lưu ý cho người học, chúng ta cần phải vượt qua '$ filter'in bộ điều khiển của chúng tôi để sử dụng phương pháp này. – rram

+10

Đáng chú ý là mã trên sẽ lọc dựa trên ID là chuỗi con. Vì vậy, lọc trên một id của 73 cũng sẽ tìm thấy 733, 4573, 173 vv Để có được một so sánh nghiêm ngặt, bạn phải vượt qua một tham số so sánh thứ ba của 'true' theo tài liệu. – Hooligancat

27

Làm thế nào về đồng bằng JavaScript? More about Array.prototype.filter().

var myArray = [{'id': '73', 'name': 'john'}, {'id': '45', 'name': 'Jass'}] 
 

 
var item73 = myArray.filter(function(item) { 
 
    return item.id === '73'; 
 
})[0]; 
 

 
// even nicer with ES6 arrow functions: 
 
// var item73 = myArray.filter(i => i.id === '73')[0]; 
 

 
console.log(item73); // {"id": "73", "name": "john"}

+0

Cảm ơn +1 vì đã trợ giúp.Tôi đã nhìn thấy phương pháp lọc JavaScript, tôi đang tìm cách góc cạnh. – rram

Các vấn đề liên quan