1.查找元素:forEach循环
function findAllOccurrences(arr, target) {
var temp=[];
arr.forEach(function(value,index){
value !==target||temp.push(index)
})
return temp
}
2.移除数据:slice
关于改变数组和不改变数组的方法
slice() 方法可从已有的数组中返回选定的元素。
语法:arrayObject.slice(start,end)
参数 描述:start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
说明:请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
4.添加元素
function insert(arr, item, index) {
var result = arr.slice(0);
result.splice(index,0,item);
return result;
}
5.删除重复元素
思路:先排序再删除
function duplicates(arr) {
var a=arr.sort();
var b=[];
for(i=0;i<a.length;i++){
if(a[i]==a[i+1] && a[i]!=a[i-1]){
b.push(a[i]);
}
}
return b
}
6.函数的块级作用域
function functions(flag) {
var getvalue=null;
if (flag) {
getValue = function(){ return 'a'; }
} else {
getValue = function() { return 'b'; }
}
return getValue();
}
这道题是考函数声明与函数表达式的区别,原题的写法,是在两个逻辑分支里面各有一个函数声明,但是对于函数声明,解析器会率先读取并且让其在执行任何代码前可用,意思就是别的代码还没运行呢,两个getValue声明已经被读取,所以总是执行最新的那个。函数表达式,当解析器执行到它所在的代码行时,才会真正被解释执行,所以两个逻辑分支可以分别执行