js题

null与undefined的区别:

在javascript中,将一个变量赋值undefined或null,几乎没有区别;

undefined与null在if语句中,都会被自动转为false,相等运算符甚至直接报告两者相等;

最初设计:

null是表示一个‘无’的对象,转为数值时是0;undefined是一个表示‘无’的原始值;转为数值是NaN;

目前用法:

null表示没有对象,即该处不应该有值;典型的用法:

  1作为函数的参数,表示该函数的参数不是对象;

  2作为对象原型链的终点;

undefined表示缺省值,就是此处应该有一个值,但是 还没有定义;典型用法:

  1变量被声明了,但是没有赋值,就等于undefined;

  2调用函数时,应该提供的参数没有提供,该参数等于undefined;

  3对象没有赋值的属性,该属性的值为undefined;

  4函数没有返回值时,默认返回undefined;

typeof返回的几种类型:

typeof(1): number
typeof(NaN): number
typeof(Number.MIN_VALUE): number
typeof(Infinity): number
typeof("123"): string
typeof(true): boolean
typeof(window): object
typeof(document): object
typeof(null): object
typeof(eval): function
typeof(Date): function
typeof(sss): undefined
typeof(undefined): undefined;

数组去重的几种方法:

思路1:构建一个新数组存放结果,for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比,若结果数组中没有该元素,则存到结果数组中;

Array.prototype.unique1 = function(){
 var res = [this[0]];
 for(var i = 1; i < this.length; i++){
  var repeat = false;
  for(var j = 0; j < res.length; j++){
   if(this[i] == res[j]){
    repeat = true;
    break;
   }
  }
  if(!repeat){
   res.push(this[i]);
  }
 }
 return res;
}
var arr = [1, ‘a‘, ‘a‘, ‘b‘, ‘d‘, ‘e‘, ‘e‘, 1, 0]
alert(arr.unique1());

思路2:

1先将原数组进行排序,检查原数组中的第i个元素与结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相同位置,如果不相同,则将该元素存入结果数组中;

Array.prototype.unique2 = function(){
 this.sort(); //先排序
 var res = [this[0]];
 for(var i = 1; i < this.length; i++){
  if(this[i] !== res[res.length - 1]){
   res.push(this[i]);
  }
 }
 return res;
}
var arr = [1, ‘a‘, ‘a‘, ‘b‘, ‘d‘, ‘e‘, ‘e‘, 1, 0]
alert(arr.unique2());

思路3:

创建一个新的数组存放结果,创建一个空对象,for循环时每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值1,存入到第二步建立的对象中,说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复;

Array.prototype.unique3 = function(){
 var res = [];
 var json = {};
 for(var i = 0; i < this.length; i++){
  if(!json[this[i]]){
   res.push(this[i]);
   json[this[i]] = 1;
  }
 }
 return res;
}

var arr = [112,112,34,‘你好‘,112,112,34,‘你好‘,‘str‘,‘str1‘];
alert(arr.unique3());

给定一个字符串数组,统计字母个数放在对象中输出(比如输入字符串为“aoihgosangaog”,输出对象{‘a‘:3,‘o‘:3,‘i‘:1,‘h‘:1,‘g‘:3,‘s‘:1,‘n‘:1}):

Array.prototype.zhao=function(){
var stat={};
for(var index in this){

var value=this[index];
for(var i=0,j=value.length;i<j;i++){
var str=value.charAt(i);
if(!stat[str]){
stat[str]=1;
} else{
stat[str]++;
}
}

}
return stat;
}

从长度为n的数组中随机抽取m个元素,以数组形式输出,要求不能重复抽取

function zhao(arr,num){
var temp=new Array();
for(var i in arr){
temp.push(arr[i])
};
var arra=new Array();
for(var i=0;i<num;i++){
if(temp.length>0){
var ran=Math.floor(Math.random()*temp.length);
arra[i]=temp[ran];
temp.splice(ran,1);
}else{
alert("取完了")
break;
}
}
return arra;
}

9、不使用lwhile和for循环,创建一个长度为100的数组,并且每个元素的值等于它的下标。

http://www.cnblogs.com/mr-wuxiansheng/p/6624648.html

http://www.ccc5.cc/2085.html

10、有一个长度为100的数组,请以优雅的方式求出改数组的前10个元素之和
提示:优雅的方式是以数组自带方法,不用for或者while循环

var arr = [1,2,3,4,5,6,7,8,9,10,11,12],
r = arr.slice(0,10).reduce(function(x,y){
return x+y;
});
alert(r);

时间: 2024-11-02 03:43:35

js题的相关文章

一道js题

<script> var a = 5; function test(){ this.a = 10; a = 15 this.func = function(){ var a = 20 ; alert(this.a); } } var tt = new test(); tt.func(); setTimeout(tt.func, 1000); </script> 这是之前看到的一道js题,其中有a出现了五次,那么到底输出什么呢,我想看了我上一个随笔你应该就明白了. 这个题主要考察两个

一道有趣的js题以及个人的理解

var number = 2; var obj = { number : 4, fn1 : ( function() { this.number *= 2; number=number*2; var number=3; return function() { this.number *= 2; number*=3; alert(number); } } )(), db2:function(){this.number*=2} }; var fn1 = obj.fn1; alert(number);

关于perfectionkills上的那些js题

今天晚上研究了下perfectionkills上的14道js题目,说实话,还挺搞脑子的,那么我们下面来分析分析吧~ 1. (function(){ return typeof arguments; })(); 结果是"object",arguments是一个类数组,不论它到底是数组还是对象,typeof的结果肯定是"object"啦,当然类数组本身就是对象,Object.prototype.toString.call(arguments)的结果是[object Ar

js题集29--部分题目在线答题链接地址

1.http://davidshariff.com/js-quiz/  ---难度正常 2.http://perfectionkills.com/javascript-quiz/ --略虐心 3.http://perfectionkills.com/javascript-quiz-es6/ --没看过es6的就算了吧. 4.http://madebyknight.com/javascript-scope/  --基础题. 5.http://www.w3schools.com/js/js_quiz

27道js题

开始原文网址:http://javascript-puzzlers.herokuapp.com/ 本文是题目来自以上网址,解析是自己写的 1. ["1", "2", "3"].map(parseInt) A ["1","2","3"] B [1,2,3] C [0,1,3] D other 选D ohter 也就是 [1,NaN,NaN]:parseInt("字符串"

一道关于引用传递和值传递的JS题

先看题1 var obj = {name:"a"} function bar(obj) { console.log(obj.name); obj = {name:"b"}; console.log(obj.name) } console.log(bar(obj)) console.log(obj.name) 在chrome控制台执行以下看看,发现依次打印 aba 题2,稍微有点变化 var obj = {name:"a"} function ba

js题集7

1. []==[] 答案:false. 数组,在 Javascript 中是对象,对象使用 == 比较都是比较的引用. 简单的说,就是,如果是同一个对象,就相等,如果不是同一个对象,就不等. 每次使用 [] 都是新建一个数组对象,所以 [] == [] 这个语句里建了两个数据对象,它们不等. 2. [3.toString(),3..toString(),3...toString()] 答案:error,"3",error Number中的toString(a),能够将数值转化成为a进制

前端面试js题

var a=10; (function(){ console.log(a); var a=100; })(); 结果:输出undefined 解释: function中有var a=100; 声明会提升到function最开头,但赋值发生在最后. 上面的代码等价于 var a=10; (function(){ var a; console.log(a); a=100; })(); 打印a的时候,a并没有在function内赋值,所以是undefined.

js题集6

1. function() { var a = 10; if(a > 5) { a = 7; } alert(a); } 2. function() { if(true) { var a = 5; } alert(a); } 3. var a = 5; function first() { a = 6; } function second() { alert(a); } 按顺序执行函数. 4. var a = 5; function() { var a = 7; alert(a); } 5. v

js题集19

1.实现斐波那契数列.达到题目中的效果.不知道斐波那契数列是啥的请自行百度. function fibonacci(){ } var f=fibonacci(); for(var i=0;i<10;i++){ console.log(f()); } //output:按顺序输出斐波那契数列的数字. eg: 1 2 3 5 8 13 21 34 55 89