今儿搞定了一点数组之类的题。js的数组可真是灵活呦。
来看一看数组的一些函数吧。
向数组后添加一个元素,返回原数组不变。返回新数组。
function append(arr, item) {
var arr2=[];
arr2=arr.slice(0);
arr2.push(item);
return arr2;
}
var arr=[1, 2, 3, 4];
console.log(append(arr, 10)); //[1, 2, 3, 4,10]
console.log(arr) //[1, 2, 3, 4]
如果定义 var arr2=arr的话,那么arr2指向了arr的引用。那么arr2改变也会伴随着arr改变。
而slice浅复制:arr数组并返回了一个新数组,与原数组没有关系了。
实现insert函数 。insert(arr, data, index)。对arr数组在index位置添加data。
//数组的删除 添加元素 splice
function insert(arr, item, index) {
var arr2=arr.concat();
arr2.splice(index,0,item);
return arr2;
}
//[1,2,'z',3,4]
console.log(insert([1, 2, 3, 4], 'z', 2));
MDN slice
MDN splice
slice
str.slice(beginSlice[, endSlice])
beginSlice是开始位置
endSlice是结束位置
从开始位置到结束位置复制str,为一个新的数组,原数组不做变化。
splice
array.splice(start, deleteCount[, item1[, item2[, ...]]])
start是开始位置
deleteCount是删除元素的个数
item1-n是添加的n个元素
这里splice函数把原数组改变了,返回的是删除的几个数组成的数组。
map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。
求数组的平方,返回旧数组。
// map
function square(arr) {
return arr.map(function(index){
return index*index
})
}
console.log(square([1, 2, 3, 4]));
构建findAllOccurrences(arr, target)函数,对arr输出与target相同的元素的所有位置
//forEach(data,index)
function findAllOccurrences(arr, target) {
var arr2=[];
for(var i=0;iif(arr[i]===target){
arr2.push(i);
}
}
return arr2;
}
哈哈,以后不用一直for循环啦