2013-03-12 47 views
14

Tôi có một chức năng sử dụng một giá trị mảng biểu diễn dưới dạngLàm thế nào để chọn tất cả các giá trị khác trong một mảng ngoại trừ phần tử thứ i?

markers[i] 

Làm thế nào tôi có thể chọn tất cả các giá trị khác trong một mảng ngoại trừ một điều này?

Mục đích của việc này là đặt lại tất cả các hình ảnh Google Maps khác về trạng thái ban đầu của chúng nhưng đánh dấu một hình ảnh mới bằng cách thay đổi hình ảnh.

Trả lời

10

sử dụng phương thức array.splice để lấy một mảng các phần tử không bao gồm yếu tố này.

Điều đó ảnh hưởng đến mảng vĩnh viễn, nếu bạn không muốn điều đó, hãy tạo bản sao trước.

var origArray = [0,1,2,3,4,5]; 
var cloneArray = origArray.slice(); 
var i = 3 ; 

cloneArray.splice(i,1); 

document.write(cloneArray.join("---")); 
+0

rằng sẽ ảnh hưởng đến mảng vĩnh viễn? – blarg

+0

@JackDamery có nó sẽ, vì vậy bạn sẽ cần phải tạo một bản sao. – DhruvPathak

+0

@DhruvPathak Bah, không. 'slice()' tạo đối tượng mới, không ảnh hưởng đến mảng gốc. Các hàm duy nhất có tác động dữ liệu ở đây là 'join()' và 'splice()', nhưng chúng được gọi sau 'slice()'. – TN888

4

Bạn có thể sử dụng slice() Phương pháp

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]; 
var citrus = fruits.slice(1,3); 

Phương pháp lát() trả về các yếu tố được lựa chọn trong một mảng, như một đối tượng mảng mới.

+0

Chắc chắn là cách tốt nhất! +1 – xechelonx

6

Bạn có thể sử dụng ECMAScript 5 Array.prototype.filter:

var items = [1, 2, 3, 4, 5, 6]; 
var current = 2; 

var itemsWithoutCurrent = items.filter(function(x) { return x !== current; }); 

Có thể có bất kỳ logic so sánh thay vì x !== current. Ví dụ, bạn có thể so sánh các thuộc tính đối tượng.

Nếu bạn làm việc với nguyên thủy, bạn cũng có thể tạo ra một chức năng tùy chỉnh như except mà sẽ giới thiệu chức năng này:

Array.prototype.except = function(val) { 
    return this.filter(function(x) { return x !== val; });   
}; 

// Usage example: 
console.log([1, 2, 3, 4, 5, 6].except(2)); // 1, 3, 4, 5, 6 
+0

Điều này sẽ hoạt động khác nếu giá trị mảng giống nhau, tức là [2, 2, 2, 2] –

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