lesson21 JS对象 & JSON & JS数组操作 习题

2018-09-06  本文已影响0人  红豆丁244

第 1 题

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

第 2 题

遍历 company 对象,输出里面每一项的值

var company = {
    name: '饥人谷',
    age: 3,
    sex: '男'
}
var company = {
    name: '饥人谷',
    age: 3,
    sex: '男'
}
for(key in company){
  console.log(company[key])
}

第 3 题

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

这里使用JSON.stringify()和JSON.parse()来将对象转换成字符串并且还原的方式来实现深拷贝

// 定义数组
var obj = {
    name: 'NinthG',
    age: 26,
    friends: ['Game', 'Skin', 'Music']
}
// 使用JSON.stringify()和JSON.parse()方法
var "new obj" = JSON.parse(JSON.stringify(obj))
// 改变obj中的name
obj.name = '秦涛'
//测试深拷贝是否成功
console.log(obj)
console.log("new obj")

// 输出结果
[object Object] {
  age: 26,
  friends: ["Game", "Skin", "Music"],
  name: "秦涛"
}
[object Object] {
  age: 26,
  friends: ["Game", "Skin", "Music"],
  name: "NinthG"
}

第 4 题

分别举例说明数组方法push、pop、shift、unshift、join、splice、sort、join、reverse、concat的作用?

var a = [1, 2, 3];
a.push(4);
console.log(a);//[1, 2, 3, 4]
console.log(a.length);//4
var a = [1, 2, 3, 4];
consloe.log(a.pop());//4
console.log(a);//[1, 2, 3]
console.log(a.length);//3
var a = [1, 2, 3, 4];
consloe.log(a.shift());//1
console.log(a);//[ 2, 3, 4]
console.log(a.length);//3
var a = [2, 3, 4];
a.unshift(1);
console.log(a);//[ 1, 2, 3, 4]
console.log(a.length);//4
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,3));//[2, 3, 4]
console.log(a.length);//2
console.log(a);//[1,5]
var a = [1,2,3,4,5];
a.splice(1,0,9,99,999);
console.log(a.length); //8
console.log(a);//[1, 9, 99, 999, 2, 3, 4, 5]
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=[5,4,3,2,1]
a.sort()
console.log(a) //[1, 2, 3, 4, 5]
var a = [1,2,3,4,5];
a.reverse();
console.log(a); //[5, 4, 3, 2, 1]
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]

第 5 题

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

function filterPositive(arr){
}
var arr = [3, -1,  2,  '饥人谷', true]
filterPositive(arr)
console.log(filterPositive(arr)) //[3,  2]
function filterPositive(arr){
  return arr.filter(function(e){
    return (typeof(e) == "number" && e > 0);
  });
}
var arr = [3, -1,  2,  '饥人谷', true];
filterPositive(arr);
console.log(filterPositive(arr)); //[3,  2]

第 6 题

用 splice函数分别实现 push、pop、shift、unshift方法。
如:

function push(arr, value){
    arr.splice(arr.length, 0, value)
    return arr.length
}
var arr = [3, 4, 5]
arr.push(10) // arr 变成[3,4,5,10],返回4

改进版

function push(arr){
    for(var i=1; i<arguments.length;i++){
        arr.splice(arr.length, 0, arguments[i])
    }
    return arr.length
}
//下面的写法有兴趣的同学可自行了解 //http://es6.ruanyifeng.com/#docs/array
function push(arr, ...args){
    arr.splice(arr.length, 0, ...args)
    return arr.length
}

回答

function push(arr){    
    for(var i=1; i<arguments.length;i++){
        arr.splice(arr.length, 0, arguments[i]);
    }
    return arr.length;
}
function pop(arr){    
    return arr.aplice(arr.length-1,1);
}
function shift(arr){    
    return arr.aplice(0,1);
}
function unshift(arr){    
    for(var i=1; i<arguments.length;i++){
        arr.aplice(0,0,arguments[i]);
    }
    return arr.length;
}

第 7 题

对以下代码 users中的对象,分别以 name 字段、age 字段、company 字段进行排序

var users = [
  { name: "John", age: 20, company: "Baidu" },
  { name: "Pete", age: 18, company: "Alibaba" },
  { name: "Ann", age: 19, company: "Tecent" }
]
var sortByName = users.sort(function(v1,v2){
   return v1.name > v2.name;
});
var sortByAge = users.sort(function(v1,v2){
   return v1.age > v2.age;
});
var sortByCompany = users.sort(function(v1,v2){
   return v1.company > v2.company;
});
上一篇 下一篇

猜你喜欢

热点阅读