2013-02-26 18 views
6

Tôi gặp vấn đề về sự hiểu biết mối nối và tôi muốn được giúp đỡ.js. splice trả về mục bị loại bỏ?

Vui lòng kiểm tra jsfiddle.

http://jsfiddle.net/fantill/TbpWf/1/

value = "c, a, b" 
value = value.split(',').splice(1, 1).join(',') 
alert(value); 

giá trị được cho là có lợi nhuận 'c, b'.

Tuy nhiên, nó trả về 'a';

Điều gì là sai với phương pháp này?

Cảm ơn bạn rất nhiều.

+1

Tôi không chắc chắn những gì bạn đang yêu cầu. Có, 'splice' trả về các mục đã loại bỏ, và đầu ra được cho là' a' bởi vì đó là những gì bạn đã loại bỏ. Vấn đề ở đâu? – melpomene

Trả lời

10

.splicekhông trả lại mục đã xóa. Tuy nhiên, nó cũng thao tác mảng trong nội bộ. Điều này ngăn không cho bạn chuỗi bất cứ điều gì để .splice; bạn phải thực hiện hai cuộc gọi riêng biệt:

value = value.split(','); 
value.splice(1, 1); 
console.log(value.join(',')); 

Nếu bạn làm value = value.splice(...), value được ghi đè, và mảng bị mất!

+0

cảm ơn bạn rất nhiều !!!!! – Till

6

.splice là tại chỗ, vì vậy chỉ cần loại bỏ các value = và nó sẽ sửa đổi các mảng như bạn mong muốn:

> var value = "c, a, b"; 
> value = value.split(', '); 
["c", "a", "b"] 
> value.splice(1, 1); 
["a"] 
> value 
["c", "b"] 
+0

cảm ơn bạn rất nhiều !!! – Till

2
var a = ["1","2","3"] 
a.splice(1,1) && a 
a=["1","3"] 
+4

Mặc dù điều này có thể trả lời câu hỏi, một số nhận xét và/hoặc giải thích sẽ rất hay. Điều đó cũng sẽ giúp người dùng khác. – VDWWD

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