题目要求:输入数组arr和数组元素item,找出item元素在arr数组中的位置,如果数组中有item则输出该元素数组中的位置,否则输出错误信息。
分析: 1.题目要求我们输入数组和数组元素,找出数组元素在数组中的位置,也就是数组的下标,所以定义一个indexOf函数,给它设置两个参数arr、item, 2.核心思想:将输入的数组元素与数组中的每一项进行匹配,匹配相同的返回该元素的下标,输入的数组元素与数组没有匹配则返回提示信息
实现代码如下:
function indexOf(arr, item) {
var index = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] === item) {
index = "输入数字的数字下标是" + i;
}
}
if (index === 0) {
index = "该数组中没有您输入的数字";
}
return index;
}
题目要求:输入数组arr和数组元素item,找出item元素在arr数组中出现的次数
分析:此问题的核心思想是循环数组中的每一项与输入的元素进行对比,相同的则计数一次,直到程序循环完成为止,最终返回累加计数的变量
代码如下:
function FindOccurrences(arr, item) {
var j = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] === item) {
j++;
}
}
return "该元素在数组中出现的次数为" + j;
}
题目要求:求arr数组中所有元素的和,输入的元素是Number类型
分析:将循环出的数组元素累加到一个变量中
代码如下:
function arrSum(arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
题目要求:移除数组 arr 中指定item的元素。
分析:此问题的核心思想是循环数组中的每一项与输入的元素进行对比,与输入元素不相同的添加到新数组中
代码如下:
function arrRemove(arr, item) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] != item) {
newArr.push(arr[i]);
}
}
return newArr;
}
第二种方法:循环数组中的每一项与输入的元素进行对比,与输入元素相同的利用splice方法删除
function removeWithoutCopy(arr, item) {
for(var i=0;i<arr.length;i++){
if(arr[i] == item){
arr.splice(i,1);
i=0;
}
}
return arr;
}
在数组 arr 末尾添加元素 item
分析:利用push方法向数组中添加新元素
代码如下:
function addArr(arr, item) {
arr.push(item);
return arr;
}
console.log(addArr([1, 2, 3, 4], 10));
题目要求:在数组 arr 开头添加元素 item
分析:利用unshift方法向数组中添加新元素
代码如下:
function addArr(arr, item) {
arr.unshift(item);
return arr;
}
题目要求:合并数组 arr1 和数组 arr2
分析:利用concat方法将arr1和arr2合并到一个新数组arr3
代码如下:
function concatArr(arr1, arr2) {
var arr3 = [];
arr3 = arr1.concat(arr1);
return arr3;
}
题目要求:将数组中重复的字符筛选掉
分析:利用indexOf方法的返回值来判断添加到新数组中的字符是否出现过,出现过的则不添加,没有出现过的则添加
代码如下:
//添加到新数组
function unique(arr) {
var newArr = [];
for (i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
代码如下:
function removeDuplicates(arr){
for(var i=0;i<nums.length;i++){
if(nums[i]===nums[i+1]){
nums.splice(i,1);
i--;
}
}
return arr;
}
题目要求:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例: 输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。
分析:将数组中的0全部删除,利用count计数在将删除的0添加到nums数组中后面
代码如下:
function moveZeroes(nums) {
var count = 0;
for (i = 0; i < nums.length; i++) {
if (nums[i] === 0) {
nums.splice(i, 1);
count++;
}
}
for (i = 0; i < count; i++) {
nums.push(0);
}
return nums;
}
// 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按
//非递减顺序 排序。
// 示例 :
// 输入:nums = [-4,-1,0,3,10]
// 输出:[0,1,9,16,100]
// 解释:平方后,数组变为 [16,1,0,9,100]
// 排序后,数组变为 [0,1,9,16,100]
代码如下:
function sortedSquares(nums) {
var newArr = [];
for (var i = 0; i < nums.length; i++) {
newArr.push(nums[i] * nums[i]);
}
for (var i = 0; i < newArr.length - 1; i++) {
for (var j = 0; j < newArr.length - 1 - i; j++) {
if (newArr[j] > newArr[j + 1]) {
var temp = newArr[j];
newArr[j] = newArr[j + 1];
newArr[j + 1] = temp;
}
}
}
return newArr;
}
持续更新…