刷題
1. 查找数组中元素的位置并返回下标,
String 对象方法 indexOf()
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。
注意: indexOf() 方法区分大小写。
2.数组求和
3.移除数组中的元素,不直接改原数组,返回新数组
function remove(arr, item) {
var a = [];
for(var i=0;i<arr.length;i++){
if(arr[i] != item){
a.push(arr[i]);
}
}
return a;
}
4.移除数组中的元素,直接在原数组上操作。数组splice()方法。
splice() 方法用于添加或删除数组中的元素。
注意:这种方法会改变原始数组。
function removeWithoutCopy(arr, item) {
for(var i=0;i<arr.length;i++){
if(arr[i] == item){
arr.splice(i,1)
i--
}
}
return arr;
}
arr[i]==item,就将i作为第一个参数,1作为第二个参数(只删除一个元素)传给splice方法。需要注意的是,splice方***改变数组的长度,因此在每次删除之后,都需要执行i–以确保数组长度正确。
如果仅删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
5.给数组添加元素,不改变原数组,返回新数组。数组concat()方法
定义和用法
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
方法二 拷贝 push()
定义和用法
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
注意: 新元素将添加在数组的末尾。
注意: 此方法改变数组的长度
function append(arr, item) {
//普通的迭代拷贝
var length = arr.length;
var newArr = [];//定义新的数组
for(var i=0; i<arr.length;i++){ //遍历原数组,
newArr.push(arr[i]);//用push把原数组拷贝到新数组中
}
newArr.push(item);//再把新填的item拷贝进来
return newArr;//返回这个新的数组
};
方法三 slice()+push() 浅拷贝
定义和用法
slice() 方法可从已有的数组中返回选定的元素。
slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
注意: slice() 方法不会改变原始数组。
function append(arr, item) {
var newArr =arr.slice(0);
//slice(start,end)浅拷贝数组
newArr.push(item);
return newArr;
};
题目要求不改变原数组,可以使用arr.slice(0)复制一个数组赋值给newArr。给数组添加元素可使用push方法。
6 删除数组的元素,返回新数组,slice()拷贝
function truncate(arr) {
var newArr = arr.slice(0,arr.length-1);
//用slice()拷贝原数组的第零个到倒数第二个元素赋值给newArr
return newArr;
}
如果是负数,那么它规定从数组尾部开始算起的位置。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)
方法二 slice()+pop()
定义和用法
pop() 方法用于删除数组的最后一个元素并返回删除的元素。
注意:此方法改变数组的长度!
提示: 移除数组第一个元素,请使用 shift() 方法。
function truncate(arr) {
var newArr = arr.slice(0);
//用slice()拷贝原数组
newArr.pop();
//使用pop方法可以删除数组的最后一个元素
return newArr;
}
实例
const sites = ['Google', 'Runoob', 'Taobao', 'Zhihu', 'Baidu'];
console.log(sites.pop());
// 输出结果为: "Baidu"
console.log(sites);
// 输出结果为: ['Google', 'Runoob', 'Taobao', 'Zhihu']
sites.pop();
console.log(sites);
// 输出结果为: ["Google", "Runoob", "Taobao"]
7.头部添加元素 slice()+unshift()
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
注意: 该方法将改变数组的数目。
function prepend(arr, item) {
var newArr = arr.slice(0);
//slice()拷贝原数组
newArr.unshift(item);
return newArr;
}
方法二 concat()连接两个数组
合并两个数组
该示例使用 apply() 添加第二个数组的所有元素。
注意当第二个数组(如示例中的moreVegs)太大时不要使用这个方法来合并数组,因为事实上一个函数能够接受的参数个数是有限制的。具体可以参考 apply()
var vegetables = ['parsnip', 'potato'];
var moreVegs = ['celery', 'beetroot'];
// 将第二个数组融合进第一个数组
// 相当于 vegetables.push('celery', 'beetroot');
Array.prototype.push.apply(vegetables, moreVegs);
console.log(vegetables);
// ['parsnip', 'potato', 'celery', 'beetroot']
方法三 [].push.apply()合并两个数组推进原数组
方法三 slice()+unshift()
方法四 join()+split()
定义和用法
join() 方法用于把数组中的所有元素转换一个字符串。
元素是通过指定的分隔符进行分隔的。
array.join(separator)
separator可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
定义和用法
split() 方法用于把一个字符串分割成字符串数组。
提示: 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
注意: split() 方法不改变原始字符串。
string.split(separator,limit)
8删除数组第一个元素,返回新数组shift()
定义和用法
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
注意: 此方法改变数