一到阿里面试题(js)

写一个求和的函数sum,达到下面的效果

// Should equal 15
sum(1, 2, 3, 4, 5);
//Should equal 0
sum(5, ‘abc‘, -5);
//Should equal 4
sum(1, true, ‘a‘, ‘D‘, 1, ‘F‘, 1, ‘w‘);

下面附上多种方法:

function sum(){
                var add = 0;
                for(var i = 0; i < arguments.length; i++){
                    if(!isNaN(Number(arguments[i]))){
                        add += Number(arguments[i]);
                    }
                }
                alert(add);
            }

            sum(1,2,3,4,5);
            sum(5,‘asd‘,-5);
            sum(1, true, ‘a‘, ‘D‘, 1, ‘F‘, 1, ‘w‘);

普通的方法

var sum = function() {
  return [].slice.call(arguments).map(function(x) {
    return isNaN(Number(x)) ? 0 : Number(x);
  }).reduce(function(a, b) {
    return a + b;
  });
}

map&reduce方法

var sum = function(){
   return [].reduce.call(arguments,
        function(a,b){return (parseFloat(+a)||0)+(parseFloat(+b)||0)})
}

再改

时间: 2024-09-11 17:06:07

一到阿里面试题(js)的相关文章

前端面试题 -- JS篇

前端面试题 -- JS篇 类型 1.js中有哪些数据类型,并解释清楚原始数据类型和引用数据类型 js中共有null,undefined, string,number,boolean,object六种数据类型. 原始数据类型: null,undefined, string,number,boolean 引用数据类型:object 两者的区别:1)值存储方式不同: 原始数据类型:将变量名和值都存储在栈内存中 引用数据类型:将变量名存储在栈内存中,将值存储在堆内存中,并在栈内存中存储值的地址,该地址指

前端面试题 | JS部分(附带答案)

目前在找工作,所以各方收集了一堆面试题.其实刷面试题的过程也能更新自己对知识的认识,所以也提醒自己多看多理解.如果对下面题目有更深理解,会实时更新.遇到新题目,也会不定时更新.希望能帮助到部分朋友- 一.各种函数方法定义及区别 1. typeof运算符和instanceof运算符以及isPrototypeOf()方法的区别 typeof是一个运算符,用于检测数据的类型,比如基本数据类型null.undefined.string.number.boolean,以及引用数据类型object.func

高级前端面试题 js 2

第 1 题:(滴滴.饿了么)写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么? 1. 更准确因为带key就不是就地复用了,在sameNode函数 a.key === b.key对比中可以避免就地复用的情况.所以会更加准确. 2. 更快利用key的唯一性生成map对象来获取对应节点,比遍历方式更快.主要是为了提升diff[同级比较]的效率.自己想一下自己要实现前后列表的diff,如果对列表的每一项增加一个key,即唯一索引,那就可以很清楚的知道两个列表谁少了谁没变.而

真融宝面试题——JS部分

1.sessionStorage .localStorage 和 cookie 之间的差别 sessionStorage 和 localStorage 是HTML5 Web Storage API 供给的,可以便利的在web恳求之间保存数据. 共同点:都是在浏览器端存储的数据,且同源的. 差别: cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递.而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存.

js面试题--------JS中数字和字符,布尔类型相加相减问题

JS中数字和字符相加相减问题 <html lang="en"> <head> <meta charset="utf-8" /> <title></title> </head> <body> </body> </html> <script type="text/javascript"> var a = 100; var b = &

前端面试题js和jQuery

真正面试中,面试官往往采用的是由难到易的套路,那javascript和jQuery就是重中之重了,以及针对项目和所用技术方面的一些问题也就是你的必备储粮啦! JavaScript 什么是闭包(closure),为什么要用它? 闭包简单的说就是一个函数能访问外部函数的变量,这就是闭包,不理解就看代码,例如: function aa(x){ var num=1; function bb(y){ console.log(x+y+(++num)); } } aa函数中的bb函数就是闭包了,bb函数可以使

js面试题--js的继承

js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式 1.使用对象冒充实现继承(该种实现方式可以实现多继承) 实现原理:让父类的构造函数成为子类的方法,然后调用该子类的方法,通过this关键字给所有的属性和方法赋值 Js代码   function Parent(firstname) { this.fname=firstname; this.age=40; this.sayAge=fu

腾讯面试题,js处理1千万条数据排序并且页面不卡顿

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

前端基础面试题(JS部分)

1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined.Null.Boolean.Number.String 值类型:数值.布尔值.null.undefined. 引用类型:对象.数组.函数. 堆栈数据结构:是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出! js数组中提供了以下几个方法可以让我们很方便实现堆栈: shift:从数组中把第一个元素删除,并返回这个元素的值. unshift: 在数组的开头添加一个或更多元素,并返回

面试题-JS中的作用域相关问题

对象类型: 原始数据类型存储的是值,而对象类型存储的是地址(指针).下面的这个例子就比较有意思了. 先看题: function test(person) { person.age = 26 person = { name: 'yyy', age: 30 } return person } const p1 = { name: 'yck', age: 25 } // 问题1: const p2 = test(p1) console.log(p1) //---->??? // 答案1:{name:'