美文网首页
JS能力测评经典题2

JS能力测评经典题2

作者: 这很重要吗 | 来源:发表于2017-05-15 20:21 被阅读0次

不考虑算法复杂度,用递归做:

function sum(arr) {
    var len = arr.length;
    if(len == 0){
        return 0;
    } else if (len == 1){
        return arr[0];
    } else {
        return arr[0] + sum(arr.slice(1));
    }
}

slice 参数 : slice(start,end);

slice 方法,在string对象和array对象 的用法上类似。

对于数组对象来说,slice 方法提取 从 start下标起 以end下标 为结尾的 一段元素(但不包括end下标的元素),然后返回新的数组,对原数组没有任何是影响,
当start 为0 时, 等于说是 克隆一个新的数组,克隆后 两个数组进行各自的操作,都互不影响

var clone = array.slice(0);
var clone= array.concat();

常规循环:

function sum(arr) {
    var s = 0;
    for (var i=arr.length-1; i>=0; i--) {
        s += arr[i];
    }
    return s;
}

函数式编程 map-reduce:

function sum(arr) {
return arr.reduce(function(prev, curr, idx, arr){
return prev + curr;
});
}

//IE9
array1.reduce(callbackfn[, initialValue])
function callbackfn(previousValue, currentValue, currentIndex, array1)

*******
forEach遍历:

function sum(arr) {
var s = 0;
arr.forEach(function(val, idx, arr) {
s += val;
}, 0);

return s;

};

******
eval:

function sum(arr) {
return eval(arr.join("+"));
};

JavaScript 全局对象的一个函数属性,`eval(string)`函数可计算某个字符串,并执行其中的的 JavaScript 代码

<script type="text/javascript">

eval("x=10;y=20;document.write(x*y)")

document.write(eval("2+2"))

var x=10
document.write(eval(x+17))

</script>
输出:
200
4
27

如果eval()的参数不是字符串,eval()将会将参数原封不动的返回。

eval(new String("2 + 2")); // 返回了包含"2 + 2"的字符串对象
eval("2 + 2"); // returns 4

从[ECMAScript 5](http://www.ecma-international.org/ecma-262/5.1/#sec-10.4.2)起它工作在全局作用域而不是局部作用域中;

function test() {
var x = 2, y = 4;
console.log(eval("x + y")); // 直接调用,使用本地作用域,结果是 6
var geval = eval;
console.log(geval("x + y")); // 间接调用,使用全局作用域,throws ReferenceError 因为x未定义
}

###eval解析JSON###

var dataObj=eval("("+data+")");//转换为json对象

为什么要 eval这里要添加 “("("+data+")");//”呢?

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]

比如JSON.parse(JSON对象解析),比如new Function()(执行特定代码)

相关文章

  • JS能力测评经典题2

    不考虑算法复杂度,用递归做: slice 参数 : slice(start,end); slice 方法,在str...

  • JS能力测评经典题1

    地址:https://www.nowcoder.com/ta/js-assessment 题目描述# 找出元素 i...

  • JS能力测评经典题--来自牛客网

    每道题都写多种解法,开阔思路。一共45道题。因为牛客网oj不支持ES6语法,所以大多数写法只给出传统写法。 题目描...

  • JS能力测评(1)

    边做着,边陆续更新吧... (我同时也做JS大挑战题,也会有时间写一写)//找出元素 item 在给定数组 a...

  • js经典逻辑题

    经过这几天的学习,相信大家对js有了初步的了解,那如何让js变得好玩呢?那我出几道简单的逻辑题,大家和我一起动动聪...

  • 心理咨询师的尴尬

    1.心理测评题 江湖救急,给我一套心理测评题! 什么?没有? 你不是心理咨询师吗? 2.教养儿子 你还跟儿子生气,...

  • 电信竞聘之标准化素质测评:关键点与核心问题

    标准化素质测评:关键点与核心问题 一、标准化素质测评 其主要包括: 1、能力倾向测评; 2、性格测评; 3、动力测...

  • 竞品测试小程序

    爱测评 , 1,分类 全部 性格 情感 健康 能力 趣味 心理 星座, 2,有测试首页,测评进度在上, 3,在结...

  • 测评题

    世界上海拔最高的城市是玻利维亚的波托西。 1、现代社会似乎热衷谈论“大师”,越没有“大师”的时代越热衷于谈论“大师...

  • JavaScript经典题-2

    题目5:判断 101-200 之间有多少个素数,并输出所有素数。【素数:只能被1和自身整除】 题目6: 要求输出国...

网友评论

      本文标题:JS能力测评经典题2

      本文链接:https://www.haomeiwen.com/subject/atjhxxtx.html