编程题总结(二)

1、一个数组 par 中存放有多个人员的信息,每个人员的信息由年龄 age 和姓名 name 组成,如{age: 2, name: ‘xx‘}。请写一段 JS 程序,对这个数组按年龄从小到大进行排序。

function sortAge(arr){
     return arr.sort(function(arr1,arr2){
         return arr1.age-arr2.age;
     })

}

return a-b:倒序

return b-a:升序

2、有字符串 var = ‘abc345efgabcab‘,请写出 3 条 JS 语句分别实现如下 3 个功能:

1)去掉字符串中的a、b、c 字符,形成结果:‘345efg‘    str.replace(/[abc]/g,‘‘)
2)将字符串中的数字用中括号括起来,形成结果:‘abc3[5]efgabcab‘  str.replace(/(\d)+/g, ‘[$1]‘);
3)将字符串中的每个数字的值分别乘以 2,形成结果:‘abc6810efgabcab‘ str.replace(/(\d)/g, function(num) {return num*2;});

3、请写出下面 JS 程序中几个 alert 的结果:

var a = 100;
function fn() {
    alert(a);
    var a = 200;
    alert(a);
}
fn(); undefined 200
alert(a);100
var a;
alert(a);100
var a = 300;
alert(a);300

4、请问以前 JS 程序有什么问题?应该如何优化?

function setStyle(element) {
    element.style.fontWeight = "bold";
    element.style.textDecoration = "none";
    element.style.color = "#000000";
}

优化后:

function setStyle(element) {
    if (!element.style) {
        return;
    }
    var eleStyle = element.style;
    eleStyle.fontWeight = "bold";
    eleStyle.textDecoration = "none";
    eleStyle.color = "#000000";
}

5、请写出一下正则表达式:

1)匹配一个全部是数字的字符串

var pat=/^\d+$/;
//开头到结尾都是数字的字符
var str=‘2345‘;
str.match(pat)
//["2345"]

2)提取一个 url 所使用的协议类型如 http、ftp 和 host 名称

var str = ‘http://yangbai.me‘;
var pat=/(\w+):\/\/([\w.]+)/;
var result=str.match(pat);
//["http://yangbai.me", "http", "yangbai.me"]
var http=result[1];
var host=result[2];

6、请使用闭包的方式,写一段 JS 程序实现如下功能:函数每调用一次则该函数的返回值加 1。

function fn(){
    var n=0;
    function fn1(){
        n++;
        console.log(n);
    }
    return fn1;
}

var foo=fn();
foo();  //1
foo();  //2
foo();  //3

7、有这样一个 URL:http://vip.qq.com/a.php?a=1&b=2&c=&d=xxx&e,请写一段 JS 程序提取 URL 中的各个参数(参数名和参数个数不确定),将其按 key-value 形式返回到一个 json 结构中,如{a:‘1‘,b:‘2‘,c:‘‘,d:‘xxx‘,e:undefined}。

function UrltoJson(url){
    var arr=url.split(‘?‘)[1].split(‘&‘);
    var result={};
    arr.forEach(function(e){
        var aEle=e.split(‘=‘);
        result[aEle[0]]= aEle[1]? aEle[1]:undefined;
//判断是否存在
    })
    return result;
}
时间: 2024-11-05 14:39:34

编程题总结(二)的相关文章

编程题:二维数组的下标意义

#include<stdio.h> void main() { int i,j,a[2][3],b[2][3]; for(i=0;i<2;i++) for(j=0;j<3;j++) a[i][j]=i; for(i=0;i<2;i++) for(j=0;j<3;j++) b[i][j]=j; printf("array a:\n"); for(i=0;i<2;i++) { for(j=0;j<3;j++) printf("%3d

腾讯实习笔试编程题 满二叉搜索树求三个节点的最低公共祖先

题目 对于一棵满二叉搜索树深度为K,节点数为2^k - 1,节点值为[1, 2^k - 1].给出k和任意三个节点的值,输出包含该三个节点的最小子树的根节点值. 输入: 4 10 15 13 输出:12 思路 二分搜索,当搜索到节点x时,若x为三个节点之一或三个节点不在以x为根节点的树的子树的同一侧,则当前节点即为所求.否则二分 代码 1 import java.util.Scanner; 2 3 4 public class Main { 5 6 public static int binar

挑战编程题(二)

昨天的题目:http://www.cnblogs.com/qiange/p/5062213.html 1. 求两个数的和 给定一个整型数组,从中挑选两个数字,使其相加为一个为一个给定的值,返回这两个值所有数组中位置下标,位置下标小的在前面,位置下标从1开始.   例如: 输入:nums= {2,7,11,13}  target=24 输出:3,4 //解法1:最简单的方法,用两层循环,算法如下,算法复杂度为O(n*n) //这个也是最容易想到的. vector<int> twoSum1(vec

Python和Java编程题(二)

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21.... 题目来源:http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html 观察规律,可以发现,自从第三个月开始,每个月的兔子总数为前两个月兔子总数之和. Java实现 1 public class TestRabbit {// TestRabbit

shell编程题(二十八)

题目: 查找请求数前20个IP(常用于查找攻来源) 答案: #! /bin/bash echo "The numbers of IP address" echo "the first way:" netstat -anlp | grep 80 | grep tcp | awk '{print $5}' | awk -F: '{print $1}' | uniq -c | sort -nr | head -n20 echo "the second way:&

shell编程题(二十九)

题目: 用tcpdump嗅探80端口的访问 答案: sudo tcpdump -i ens33 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | head -n20 解析: tcpdump -i interface:指定tcpdump需要监听的接口.默认会抓取第一个网络接口 -n:对地址以

挑战编程题(三)

接 挑战编程题(二)http://www.cnblogs.com/qiange/p/5090588.html 题目: 有两个非负数的链表,每个链表都反序的存储一个多位数字的每一位,(例如:链表2->4->3  数字342),现在求两个链表数字的相加,求和的链表. 例如: Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 /** * Definition for singly-linked lis

POJ C++程序设计 编程题#10:输出指定结果二

编程题#10:输出指定结果二 来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 总时间限制: 1000ms 内存限制: 1024kB 描述 通过填空使得程序输出的结果符合下面的要求. #include <iostream> #include <map> using namespace std; // 在此处补充你的代码 int A::count = 0; void func(B b) { } int mai

编程题:用二维字符串数组实现。从键盘输入三个学生姓名,并输出。

#include<stdio.h> #include<string.h> void main() { char name[3][30]; int i; for(i=0;i<3;i++) gets(name[i]);  /*name[i]是一个一维字符数组*/ for(i=0;i<3;i++) printf("%s\n",name[i]); } 编程题:用二维字符串数组实现.从键盘输入三个学生姓名,并输出.,布布扣,bubuko.com

编程题:指向二维数组元素的指针变量。功能:已知二维数组a[2][3],输入输出全部元素。

#include<stdio.h> void main() { int a[2][3],i,j; int *p; /*用坐标法输入二维数组元素*/ for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); /*用指针法输出二维数组元素*/ p=a[0];         /*等价于p&a[0][0];*/ for(;p<a[0]+6;p++)   printf("%4d&quo