2014-04-07 22 views
26

Có cách "gạch dưới" thông minh để xóa tất cả các cặp khóa/giá trị khỏi một mảng đối tượng không?Dấu gạch dưới: xóa tất cả các cặp khóa/giá trị khỏi một mảng đối tượng

ví dụ: Tôi có mảng sau:

var arr = [ 
     { q: "Lorem ipsum dolor sit.", c: false }, 
     { q: "Provident perferendis veniam similique!", c: false }, 
     { q: "Assumenda, commodi blanditiis deserunt?", c: true }, 
     { q: "Iusto, dolores ea iste.", c: false }, 
    ]; 

và tôi muốn nhận được như sau:

var newArr = [ 
     { q: "Lorem ipsum dolor sit." }, 
     { q: "Provident perferendis veniam similique!" }, 
     { q: "Assumenda, commodi blanditiis deserunt?" }, 
     { q: "Iusto, dolores ea iste." }, 
    ]; 

tôi có thể có được điều này làm việc với JS dưới đây, nhưng không thực sự hài lòng với các giải pháp của tôi:

for (var i = 0; i < arr.length; i++) { 
    delete arr[i].c; 
}; 

Mọi đề xuất được đánh giá cao.

Trả lời

46

Bạn có thể sử dụng mapomit kết hợp để loại trừ thuộc tính cụ thể, như thế này:

var newArr = _.map(arr, function(o) { return _.omit(o, 'c'); }); 

Hoặc mappick để chỉ bao gồm các thuộc tính cụ thể, như thế này:

var newArr = _.map(arr, function(o) { return _.pick(o, 'q'); }); 
+0

đánh bại tôi vào nó ! @ User789 Bạn cũng có thể sử dụng _.pick nếu bạn muốn hiệu ứng ngược lại: 'var newArr = _.map (arr, hàm (o) {return _.pick (o, 'q');});' – Pete

+3

@ User789 Ngoài ra, nếu bạn chỉ muốn một mảng, bạn cũng có thể sử dụng phương thức ghép: 'var newArr = _.pluck (arr, 'q');' – Pete

+0

@mister_rampage Yeah, đó cũng là một điểm tốt. –

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