1,如果数组里的某两个元素相加等于16,则去除这两个元素。如 [1,3,1,15,13,2,16,0] ==》[1,2]。
实现代码:
// 1.如果数组里的值某两个相加等于16,则删掉 var arr = [1,3,1,15,13,2,16,0]; arr.forEach(function( item1, index1 ){ arr.forEach(function( item2, index2 ){ if ( index1!=index2 && item1+item2==16 ) { arr[index1] = '#'; arr[index2] = '#'; } }) }) var newArr = arr.filter(function(item){ if ( item == '#' ) { return false; }else{ return true; } }) console.log(arr, newArr);
点评:这个题目考察数组操作是否熟练,和实现思路。
2,[‘1′,’2′,’3’].map(parseInt)的返回值是什么?看截图
点评:这个题目考得比较综合,parseInt传入两个参数,传入map的函数可以传入三个参数,具体解析看下面。
parseInt() 函数能解析一个字符串,并返回一个整数,需要两个参数 (val, radix),
其中 radix 表示要解析的数字的基数。【该值介于 2 ~ 36 之间,并且字符串中的数字不能大于radix才能正确返回数字结果值】;
但此处 map 传了 3 个 (element, index, array),我们重写parseInt函数测试一下是否符合上面的规则。
function parseInt(str, radix) { return str+'-'+radix; }; var a=["1", "2", "3"]; a.map(parseInt); // ["1-0", "2-1", "3-2"] 不能大于radix
因为二进制里面,没有数字3,导致出现超范围的radix赋值和不合法的进制解析,才会返回NaN
所以[“1”, “2”, “3”].map(parseInt) 答案也就是:[1, NaN, NaN]
3,js实现三位数分节法。如123213.23 ==》 123,213.23。
function format_number(n){ var isFloat = n.toString().indexOf('.') > -1 ? true : false; if ( isFloat ) { var dotPart = n.toString().substr( n.toString().indexOf('.') ); } var b=parseInt(n).toString(); var len=b.length; if(len<=3){ return b; } var r=len%3; var intPart = r>0?b.slice(0,r)+","+b.slice(r,len).match(/\d{3}/g).join(","):b.slice(r,len).match(/\d{3}/g).join(","); return isFloat ? intPart + dotPart : intPart; } console.log( format_number( 1231232123.231 ) );
点评:这个题目有点难,很综合,关键思路要写出来。
4,浮点数的比较,查看参考链接。

点评:这个比较的方式其实是一个思路考察,可以先比较整数部分,再比较小数部分;如果整数部分不能比较出结果,就使用parseInt转化小数部分。
参考链接:
http://www.jianshu.com/p/928c68f92c0c
http://www.bkjia.com/AJaxjc/365586.html
绝世聪明男票砸
你是谁呀?