前端面试题之JavaScript(四)

2017-09-18  本文已影响0人  庄海鑫

1.什么是JSON?JSON 格式的数据需要遵循什么规则?

  1. 复合类型的值只能是数组或对象,不能是函数,正则表达式对象,日期对象。
  2. 简单类型的值只有四种:字符串,数值(必须是以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
  3. 字符串必须使用双引号表示,不能使用单引号。
  4. 对象的键名必须放在双引号里面。
  5. 数组或对象最后一个成员的后面,不能加逗号。

2.使用 JSON 对象实现一个简单的深拷贝函数(deepCopy)

function deepCopy(obj){
  return JSON.parse(JSON.stringify(obj));
}
var obj = {
    name: 'hunger',
    age: 3,
    friends: ['aa', 'bb', 'cc']
};
var obj2=deepCopy(obj);

obj.age=4;
console.log(obj2.age);  // 3l.

3.数组方法里push、pop、shift、unshift、join、splice、slice、concat、reverse、sort、分别是什么作用?用 splice函数分别实现push、pop、shift、unshift方法

var a = new Array(1,2,3);
a.push(4);
console.log(a);//[1, 2, 3, 4]
console.log(a.length);//4
console.log(a.pop());//4
console.log(a); //[1, 2, 3]
console.log(a.length);//3
var a=new Array(1,2,3);
a.unshift(4);
console.log(a);//[4, 1, 2, 3]
console.log(a.length);//4
console.log(a.shift());//4
console.log(a); //[1, 2, 3]
console.log(a.length);//3
var a = [1,2,3,4,5];
console.log(a.join(',')); //1,2,3,4,5
console.log(a.join(' ')); //1 2 3 4 5
var a = [1,2,3,4,5];
console.log(a.splice(1,0,9,99,999));  
console.log(a.length); //8
console.log(a);//[1, 9, 99, 999, 2, 3, 4, 5]
console.log(a.splice(1,3,8,88,888));
console.log(a.length);//8
console.log(a);//[1, 8, 88, 888, 2, 3, 4, 5]
var a = [1,2,3,4,5];
console.log(a); //[1, 2, 3, 4, 5]
console.log(a.slice(1,2));//[2]
console.log(a.slice(1,-1));//[2, 3, 4]
console.log(a.slice(3,2));//[]
console.log(a); //[1, 2, 3, 4, 5]
var a = [1,2,3,4,5];
var b = [6,7,8,9];
console.log(a.concat(b));//[1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(a); //[1, 2, 3, 4, 5]
console.log(b); //[6, 7, 8, 9]
console.log(a.concat()); //[1,2,3,4,5]
console.log(b.concat("zhx"));//[6, 7, 8, 9, "zhx"]
var a = [1,2,3,4,5];
a.reverse();//[5, 4, 3, 2, 1]
console.log(a); //[5, 4, 3, 2, 1]
var a=[7,8,9,10,11];
console.log(a.sort());//[10, 11, 7, 8, 9]
console.log(a);//[10, 11, 7, 8, 9]
---------------------------
var a = [7,8,9,10,11];

a.sort(function(v1,v2){
    return v1-v2;
});
console.log(a);//[7, 8, 9, 10, 11]


var a=[1,2,3,4,5];
function splicePush(){
  
}
 var a = [1,2,3,4,5];
    //splice=>push
    a.push(6);
    console.log(a);
    a.splice(a.length,0,7);
    console.log(a);
    //spice=>pop
    a.pop();
    console.log(a);
    a.splice(a.length-1,1);
    console.log(a);
    //spluce=>unshift
    a.unshift(0);
    console.log(a);
    a.splice(0,0,-1);
    console.log(a);
    //splice=>shift
    a.shift();
    console.log(a);
    a.splice(0,1);
    console.log(

4. ES5数组扩展方法

var a = [];
var b = new Date();
console.log(Array.isArray(a)); //true
console.log(Array.isArray(b)); //false
a instanceof Array; //true
b instanceof Array; //false ES3做法

var a = new Array(1,2,3,4,5,6);

a.forEach(function(e,i,array){
    array[i]= e + 1;
});

console.log(a); //[2, 3, 4, 5, 6, 7]
var a=new Array(1,2,3,4,5,6);

console.log(a.every(function(e, i, arr){
return e < 5;
})); //false

console.log(a.some(function(e,i,arr){
  return e > 4;
}));//true
    
var a = new Array(1,2,3,4,5,6);

console.log(a.map(function(e){
  return e * e;
}));  // [1, 4, 9, 16, 25, 36]

console.log(a); //[1, 2, 3, 4, 5, 6]
var a = new Array(1,2,3,4,5,6);

console.log(a.filter(function(e){
  return e % 2 == 0;
})); // [2, 4, 6]

console.log(a); //[1, 2, 3, 4, 5, 6]
var a = new Array(1,2,3,4,5,6);

console.log(a.reduce(function(v1, v2){
    return v1 + v2;
})); // 21

console.log(a.reduceRight(function(v1, v2){
    return v1 - v2;
}, 100)); // 79

5.写一个函数,操作数组,数组中的每一项变为原来的平方,在原数组上操作

    function squareArr(arr){
      for(var i in arr){
         arr[i]=arr[i]**2;
      }
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr)

6.写一个函数,操作数组,返回一个新数组,新数组中只包含正数

    function filterPositive(arr){
      var result=[]
      for(var i in arr){
        if(typeof arr[i]=="number"&&arr[i]>0){
        result.push(arr[i]);
        }
      }
      console.log(result);
}
var arr = [3, -1,  2,  '饥人谷', true]
filterPositive(arr) //[3,  2]
console.log(arr) // [3, -1,  2,  '饥人谷', true]
function filterPositive(arr){
      for(var i=0;i<arr.length;i++){
        if(!(typeof arr[i]=="number"&&arr[i]>0)){
        arr.splice(i,1);
        i--;//因为删除的时候元素会往前窜;
        }
      }

}
var arr = [3, -1,  2,  '饥人谷', true,-2,-5,7,3,-1,3,-1]
filterPositive(arr);
console.log(arr)
function filterPositive(arr){
      for(var i=arr.length;i>0;i--){
        if(!(typeof arr[i]=="number"&&arr[i]>0)){
        arr.splice(i,1);
        }
      }

}
var arr = [3, -1,  2,  '饥人谷', true,-2,-5,7,3,-1,3,-1]
filterPositive(arr);
console.log(arr) 

7. 查看一个对象本身的所有属性,可以用Object.keys方法

var o = {
  key1: 1,
  key2: 2
};

Object.keys(o);
// ['key1', 'key2']

8. delete命令

var o = {p: 1};
Object.keys(o) // ["p"]

delete o.p // true
o.p // undefined
Object.keys(o) // []
var p = 1;
delete p // false
delete window.p // false
var o = {};
delete o.p // true
上一篇 下一篇

猜你喜欢

热点阅读