13-引用类型习题

  • 请创建一个函数,可以根据输入不同的姓名,年龄、性别,创建不同的用户实例
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
        // 请创建一个函数,可以根据输入不同的姓名,年龄、性别,创建不同的用户实例
        function createUser(name, age, sex){
            var  o = new Object()
            o.name = name
            o.age  = age
            o.sex  = sex
            o.toString = function(){
                return "我的名字" + o.name + "我的年龄:"+o.age + "性别:" + o.sex
            }
            return o
        }
        wangsan = createUser("wangsan", 18, "girl")
        console.log(wangsan)

        </script>
    </body>
</html>
  • 写一个copy对象的函数,实现两个对象之间值相等,但不是同一个对象,比如 obj2拷贝obj1中的每一项,但是obj1的修改不影响obj2(浅拷贝与深拷贝)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
        // 写一个copy对象的函数,实现两个对象之间值相等,但不是同一个对象,比如 obj2拷贝obj1中的每一项,但是obj1的修改不影响obj2(浅拷贝与深拷贝)
        function copyObject(object){
           var o = new Object()
           for (i in object){
               // 深拷贝
              /* if (typeof(object[i]) == "object"){
                   o[i] = copyObject(object[i])
               } else {
                   o[i] = object[i]
               } */
               // 浅拷贝
                o[i] = object[i]
           }
           return o
        }
        var obj = new Object()
        obj.name = {first:"luxp", last:"pp"}
        obj.age = 18
        
        </script>
    </body>
</html>
#浅拷贝                          #深拷贝
  • 浅拷贝运行结果:(obj的属性改变,obj_2的也发生改变)
  • 深拷贝运行结果:(当obj的name.first属性改变时,obj_2的name.first属性没有变化)
  • 系统有这么一些商品:(洗衣机,3000元), (笔记本电脑,12000元),(音箱,1000),请使用合适的方式表示这一组商品
goods = []
goods[0] = ["洗衣机",3000],
goods[1] = {"笔记本电脑":12000}
goods[2] = {"音箱": 1000}
  • 实现一个FIFO队列对象,只有两个方法put(向队列写入数据)与 get(从队列中读取数据)
var queue = new Object()
   queue.data = []
   queue.put = function(val){
      queue.data.push(val)
   }
   queue.get = function(){
      return queue.data.shift()
   }
  • [{“name”:“luxp”},{“name”:“wangsan”}, {“name”:“ls”}, {“name”:“ns”} ]使用sort按照name的值排序
array = [{"name":"luxp"},{"name":"wangsan"},{"name":"ls"},{"name":"ns"}]
function compare(val1,val2){
   if (val1.name > val2.name){
       return true
   } else {
       return false
   }
}
sorted_array = array.sort(compare)
  • 使用filter 挑出 5的倍数
array = [1,3,5,8,10,15] 
new_array = array.filter(function(val){
   if (val%5==0){
       return true
   }
   
})
  • 有这么一份商品价格数据
    [“商品名称”,商品价格,销售额]
    [[“good1”,1000,5000],[“good2”,1200,3600],[“good3”,1500,6000],
    [“good4”,1000,2000],[“good5”,1300,5200],[“good6”,1400,5600]]
    统计一下,价格在1200以上(不包含1200)的商品销售总额

array = [["good1",1000,5000],["good2",1200,3600],["good3",1500,6000],
["good4",1000,2000],["good5",1300,5200],["good6",1400,5600]]

function compare(pre,cur){
  console.log("cur",cur,cur[0])
  if (cur[1]>1200){
      return pre+cur[2]
  } else {
      return pre
  }
  
}
res = array.reduce(compare, 0)
  • 找出往后500年的闰年,并console中输出出来
    闰年计算方法:
    普通年能被4整除且不能被100整除的为闰年
    世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
date = new Date()
 year = date.getFullYear()
 for (i=0;i<=500; i++,year++){
    if (year%4==0 && year%100!=0){
        console.log(year) 
    }
    if (year%100==0 && year%400==0){
        console.log(year)
    }
 }
  • 注册用户要求: 不能含有kefu, kf,admin等字符,并且以任意英文字母开头,包含英文或者数字,
    最短不能少于5个字符,最长不能超过15个字符,写一个用户输入验证函数
reg1 = new RegExp("^[a-z]\\w{4,14}$")
reg2 = new RegExp("(kf)|(kefu)|(admin)")
function validateUserName(user_name){
    if (!reg1.test(user_name)){
        return false
    }
    if (reg2.test(user_name)){
        return false
    }
    return true
}

 

posted @ 2021-05-21 19:56  西瓜的春天  阅读(53)  评论(0)    收藏  举报