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方法分割,每分割一次就把这些值放到新数组里 。