FreeCodeCamp-JavaScript初级算法题-3

13、过滤数组中的假值
从数组中移除所有的假值(false values)
JavaScript 中的假值有 false、null、0、""、undefined、NaN。
提示:可以考虑将每个值都转换为布尔值(boolean)。
输入:bouncer([7, "ate", "", false, 9])
输出:[7, "ate", 9]
解法一:

function bouncer(arr) { let temp = []; for(let i =0; i

思路:
很简单,新建一个临时数组,遍历数组里的每一项,判断其布尔值是否为true,然后将true项放入临时数组里。
知识点:判断一个变量的布尔值是否为true:Boolean(变量); 往数组里添加元素,push()
解法二:
function bouncer(arr) { let newArray = []; for (let i = 0; i < arr.length; i++) { if (arr[i]) newArray.push(arr[i]); } return newArray; }

思路:和解法一如出一辙,不过是没用Boolean方法判断
解法三:
function bouncer(arr) { return arr.filter(Boolean); }

思路:用了js的过滤方法:failter
14、找出元素在排序后数组中的索引
数组(第一个参数)在排序后,将一个值(第二个参数)插入该数组,并使数组保持有序。返回这个新插入元素的最小索引值。 返回值应为一个数字。
例如,getIndexToIns([1,2,3,4], 1.5) 应该返回 1 因为1.5 大于 1(索引为 0)且小于 2(索引为 1)。
同样地,getIndexToIns([20,3,5], 19) 应该返回 2。 因为数组排序后会变成 [3,5,20],而 19 小于 20(索引为 2)且大于 5(索引为 1)。
解法:
function getIndexToIns(arr, num) { arr.sort((a, b) => a - b); for (let i = 0; i < arr.length; i++) { if (arr[i] >= num) return i; } return arr.length; }

【FreeCodeCamp-JavaScript初级算法题-3】思路:
用js的sort方法,把数组排序,然后遍历数组,若元素大于num,则返回其下标。
15、比较字符串
如果数组里的第一个字符串包含了第二个字符串中的所有字母,则返回 true。
例如,["hello", "Hello"] 应该返回 true。因为在忽略大小写的情况下,第一个字符串包含了第二个字符串里出现的所有字母。
["hello", "hey"] 应该返回 false。因为 hello 并不包含字符 y。
最后,["Alien", "line"] 应该返回 true。因为 line 中的所有字母都出现在了 Alien 中。
解法:
function mutation(arr) { let test = arr[1].toLowerCase(); let target = arr[0].toLowerCase(); for (let i = 0; i < test.length; i++) { if (target.indexOf(test[i]) < 0) return false; } return true; }

思路:
因为题目要求忽略大小写,所以要先转为小写放到新的数组里,遍历test数组,如果target数组里不包含字母就返回false,否则全部包含的话就返回true。这里的indeOf也可以写成
target.indexOf(test[i]) == -1
知识点:①转小写:toLowerCase()
② 数组里是否包含某值,indexOf,包含则返回其下标,不包含则返回-1
16、分割数组
请编写一个函数,该函数将一个数组(第一个参数)拆分成若干长度为 size(第二个参数)的子数组,并将它们作为二维数组返回。
输入:chunkArrayInGroups(["a", "b", "c", "d"], 2)
输出:[["a", "b"], ["c", "d"]]
解法:
function chunkArrayInGroups(arr, size) { let newArr = []; for (let i = 0; i < arr.length; i += size) { newArr.push(arr.slice(i, i + size)); } return newArr; }

思路:
新建一个数组用于存储分割的数组元素,遍历原数组,用slice方法分割,每分割一次就把这些值放到新数组里 。

    推荐阅读