| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | id: a39963a4c10bc8b4d4f06d7e | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | title: 过滤数组元素 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | challengeType: 5 | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | forumTopicId: 16046 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  | dashedName: seek-and-destroy | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --description--
 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | 你将获得一个初始数组(`destroyer` 函数中的第一个参数),后跟一个或多个参数。 从初始数组中移除所有与后续参数相等的元素。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | **注意:** 你可以使用 `arguments` 对象。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --hints--
 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `destroyer([1, 2, 3, 1, 2, 3], 2, 3)` 应返回 `[1, 1]`。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(destroyer([1, 2, 3, 1, 2, 3], 2, 3), [1, 1]); | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3)` 应返回 `[1, 5, 1]`。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3), [1, 5, 1]); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `destroyer([3, 5, 1, 2, 2], 2, 3, 5)` 应返回 `[1]`。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(destroyer([3, 5, 1, 2, 2], 2, 3, 5), [1]); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `destroyer([2, 3, 2, 3], 2, 3)` 应返回 `[]`。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(destroyer([2, 3, 2, 3], 2, 3), []); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `destroyer(["tree", "hamburger", 53], "tree", 53)` 应返回 `["hamburger"]`。 | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | ```js | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | assert.deepEqual(destroyer(['tree', 'hamburger', 53], 'tree', 53), [ | 
					
						
							|  |  |  |   'hamburger' | 
					
						
							|  |  |  | ]); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `destroyer(["possum", "trollo", 12, "safari", "hotdog", 92, 65, "grandma", "bugati", "trojan", "yacht"], "yacht", "possum", "trollo", "safari", "hotdog", "grandma", "bugati", "trojan")` 应返回 `[12,92,65]`。 | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual( | 
					
						
							|  |  |  |   destroyer( | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |       'possum', | 
					
						
							|  |  |  |       'trollo', | 
					
						
							|  |  |  |       12, | 
					
						
							|  |  |  |       'safari', | 
					
						
							|  |  |  |       'hotdog', | 
					
						
							|  |  |  |       92, | 
					
						
							|  |  |  |       65, | 
					
						
							|  |  |  |       'grandma', | 
					
						
							|  |  |  |       'bugati', | 
					
						
							|  |  |  |       'trojan', | 
					
						
							|  |  |  |       'yacht' | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'yacht', | 
					
						
							|  |  |  |     'possum', | 
					
						
							|  |  |  |     'trollo', | 
					
						
							|  |  |  |     'safari', | 
					
						
							|  |  |  |     'hotdog', | 
					
						
							|  |  |  |     'grandma', | 
					
						
							|  |  |  |     'bugati', | 
					
						
							|  |  |  |     'trojan' | 
					
						
							|  |  |  |   ), | 
					
						
							|  |  |  |   [12, 92, 65] | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-08-13 17:24:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  | # --seed--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## --seed-contents--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | function destroyer(arr) { | 
					
						
							|  |  |  |   return arr; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | destroyer([1, 2, 3, 1, 2, 3], 2, 3); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --solutions--
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  | ```js | 
					
						
							|  |  |  | function destroyer(arr) { | 
					
						
							|  |  |  |   var hash = Object.create(null); | 
					
						
							|  |  |  |   [].slice.call(arguments, 1).forEach(function(e) { | 
					
						
							|  |  |  |     hash[e] = true; | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   return arr.filter(function(e) { return !(e in hash);}); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | destroyer([1, 2, 3, 1, 2, 3], 2, 3); | 
					
						
							|  |  |  | ``` |