js-基本数据类型-你不知道的趣味题
来源:互联网 发布:淘宝大学讲师 编辑:程序博客网 时间:2024/06/05 21:09
趣味1:原生js实现字符串转为数组,反转数组
/*写个js函数func(str),传参str为一个字符串,实现把这个字符串语句中的单词(空格隔开的)次序逆序。比如把 I am a coder变成 coder a am I,不允许使用reverse,join,substr,split*/ var str = "I am a coder"; console.log(getStr(str)); /*字符串语句中的单词(空格隔开的)次序逆序*/ function getStr(str) { var res = "", temp = ""; for (var i = str.length - 1; i >= 0; i--) { if (str[i] == " " || i == 0) { temp += (i == 0 ? str[i] : ""); res += (i == 0 ? reverseStr(temp) : reverseStr(temp) + " "); //处理末尾没有空格 temp = ""; continue; } temp += str[i]; } return res; } /*反转字符串*/ function reverseStr(str) { var newStr = ""; for (var i = str.length - 1; i >= 0; i--) { newStr += str[i]; } return newStr; }
趣味2:对象添加属性,属性是对象,该咋办?
var c={};var a={a:"a"};var b={b:"b"};c[a]=123;c[b]=345;console.log(c[a]);
c是对象,添加属性时,都会转为字符串。
这里添加a属性,a是对象,调用toString()方法,转化为字符串“[object,Object]”,所以c就把“[object,Object]”当做属性加进去了,值为123。c[b]同样的道理,但345会覆盖123,所以结果为345
趣味3.如果 对于function的参数arguments 想当做数组来使用数组的内置函数 要怎么做?
Array.prototype.***.call
function test(name,age){ console.log(Array.prototype.join.call(arguments,",")); //xiaowei,18 var arr = ["1","2"]; console.log(arr.concat("3").join(",")); //1,2,3 console.log(Array.prototype.concat.call(arguments,"come").join(",")); //[object Arguments],come console.log([].slice.call(arguments).concat("come").join(',')); //xiaowei,18,come console.log(Array.prototype.concat.apply(["come"],arguments)); //come,xiaowei,18} test("xiaowei",18); var name = "lala";备注:arguments转为数组的方法:[].slice.call(arguments);或者 Array.prototype.slice.call(arguments); function fn(a, b, c) { /*方法一:var arr = [].slice.call(arguments);*/ /*方法二:var arr = [].concat.apply([],arguments);*/ /*方法三*/ var arr = []; arr.push.apply(arr,arguments); console.log(arr instanceof Array); console.log(arr); } fn(1,2,3);
趣味4: js 里面数组下标可以是负值问题
var arr = [];arr[0] = 0;arr[1] = 1;arr[-1] = -1;arr[1.1] = 1.1;arr['a'] = 'a';console.log("length: " + arr.length);console.log(arr);for(var i in arr){ console.log(i + " :" + arr[i]);}
数组对象其实是一个特殊对象,他拥有普通对象的全部特性,所以不止负索引,小数索引,连字符串索引都是可以的,只是用这些索引向数组添加属性时,数组的length不会增加罢了,而只有当索引是正整数或其对应数字串时,length才会增加,仅此而已。
例题:
var arr = []; arr['a'] = 1; console.log(arr.length); // A arr['2'] = 2; console.log(arr.length); // B arr.length = 0; console.log(arr); // C
结果为: 0 3 [a:1]
趣味5: js 里面数组设置length为10000,会不会开辟内存?
数组是特殊的对象,可以理解为属性值是数值的对象,当我们直接将一个空数组的length设为10000,并不会多开辟内存空间。
var a=[2,3,4];a.length=10000;console.log(a.length); //10000console.log(a[900]); //undefined,并没有开辟更多的内存空间,js中是用到才开辟
6、函数表达式–匿名函数
var f = function g() { return 23;};typeof g(); //输出什么// ReferenceError: g is not defined
7、Array.prototype.indexOf() ,switch…case 使用全等模式比较
function showCase(value) { switch (value) { case 'A': console.log(1); break; case 'string': console.log(2); break; case undefined: console.log(3); break; case 'undefined': console.log(4); break; default: console.log(5); break; }}showCase(new String('A'));//结果:5
0 0
- js-基本数据类型-你不知道的趣味题
- 也许你不知道的c#基本数据类型及其默认值
- 也许你不知道的c#基本数据类型及其默认值
- 你不知道的js(中)之基本类型
- js中数据类型转换的一些奇怪现象,一定有你不知道的
- JS你会不知道的
- 你所不知道的js讲解
- 你可能不知道的js
- 《你不知道的js》-欺骗词法
- 你不知道的js上卷
- 你不知道的JavaScript(一)数据类型
- swiper.js中的坑,你不知道的js
- 你所不知道的JS-------作用域
- 《你不知道的js》------1.作用域是什么
- 你不知道的JS读书笔记2—this对象
- 你不知道的JS读书笔记5—原型继承
- 你可能不知道的js事件处理
- 你不知道的JS——札记(一)
- PAT 数字分类
- LeetCode 11. Container With Most Water
- Ibatis贴加引用
- Appium 获取h5页面元素需要加调试代码
- Windows 2008允许多用户远程登录设置
- js-基本数据类型-你不知道的趣味题
- android 开发中 最近在工作中用到的 adb 命令
- gradle学习指南
- ionic -- 使用cordova的插件实现分享到QQ、微博、微信
- 说说 JavaScript 基本包装类型
- 查找文件的类 struct _finddata_t结构体用法
- appium+Python:长按操作
- Android的编译环境--Build系统
- Halcon算子函数