从数组中删除随机字符串JavaScript

时间:2017-11-25 21:46:11

标签: javascript arrays string filter structure

我需要从数组中删除字符串,我有这个功能; 它进行一些随机测试并返回结果。

function filter_list(array) {
 array.filter((elem) => typeof elem === "string");
 return (array);
}

当我没有返回任何东西时,我得到了未定义(显然),但是当我返回数组时,我得到了这个:

"Expected: '[1, 2]', instead got: '[1, 2, \'a\', \'b\']'
Expected: '[1, 0, 15]', instead got: '[1, \'a\', \'b\', 0, 15]'
Expected: '[1, 2, 123]', instead got: '[1, 2, \'aasf\', \'1\', \'123\', 
123]'
Expected: '[]', instead got: '[\'a\', \'b\', \'1\']'
Expected: '[1, 2]', instead got: '[1, 2, \'a\', \'b\']' " 

2 个答案:

答案 0 :(得分:2)

你误导了array filter两次。

第一个问题是当你调用filter时数组不会改变。

// This code isn't the correct yet, continue below
function filter_list(array) {
  // You have to return the result of filter. The 'array' is not changed.
  return array.filter((elem) => typeof elem === "string");
}

第二个问题是您正在过滤想要过滤的对面。

// Correct code
function filter_list(array) {
  // If the condition is true, the element will be kept in the NEW array.
  // So it must be false for strings
  return array.filter((elem) => typeof elem !== "string");
}
  

filter()为每个元素调用一次提供的callback函数   一个数组,并构造一个包含所有值的新数组   callback会返回强制为true的值。调用callback   仅适用于已分配值的数组索引;它不是   为已删除或从未进行过的索引调用   指定值。未通过callback测试的数组元素   只是被跳过,并且不包含在新数组中。

答案 1 :(得分:0)

但这很容易。这是你将如何做到这一点

let data = [
  "Cat",
  1451,
  14.52,
  true,
  "I will be removed too :("
];


let filteredData =  data.filter(item => typeof item !== "string");

console.log(filteredData); // or return it