JavaScript基础案例实现

1.去除一个数组里面重复的元素

推荐方法1
(1)创建一个新的数组copy,存放去重后的数组;
(2)创建一个空对象json,作为中间件;
(3)遍历原数组arr,每次取出一个元素,访问这个对象json是否存在这个属性,如果有的话就说明重复了,如果没有的话,把这个元素放到结果数组copy中,同时把这个元素作为对象的属性,赋值为1,方便后续元素对比。

var arr = [1,1,22,2,22,22,1,3];
var copy = [];
var json = {};
for (var i = 0; i < arr.length; i++) {
    if (!json[arr[i]]) {
        copy.push(arr[i]);
        json[arr[i]] = 1;
    }
}
console.log(copy);  //  [1, 22, 2, 3]

推荐方法2
Array.indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
(1)创建一个空数组;
(2)遍历原数组的元素,如果在结果数组中可以找到该元素的索引,说明已存在;如果没有,则把该元素放进数组中。

var arr1 = [1,2,2,2,3,3,3,4,5,6];
var arr2 = [];
for(var i = 0, len = arr1.length;i<len;i++){
    if(arr2.indexOf(arr1[i])<0) {
        arr2.push(arr1[i]);
    }
}
console.log(arr2);

运行结果:
[1, 2, 3, 4, 5, 6]

2.在JavaScript中什么是伪数组,怎么将伪数组转化为标准数组

伪数组(类数组):无法直接调用数组方法,也无法使用length属性实现什么特殊的行为,但是!可以使用真正数组遍历的方法(for循环配合数组下标)来遍历它们。说的浅显一些,就是:存在着length属性,可以通过数组下标的方式进行每个元素的访问,但是不能够使用push等数组的方法。

常见的伪数组:
arguments参数:arguments是一个对象,而非一个数组。
调用document.getElementsByTagName、getElementsByClassName等各类获取元素的方法。这些方法返回的是一个NodeList(节点列表),也并不是一个数组。
将伪数组转换为数组
可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象。

为何能够使用slice实现转换呢?
slice( )方法,是基于当前数组中的一个或多个项,创建一个新数组,并返回新数组。
concat( )方法,是基于当前数组中的所有项创建一个新数组,返回新数组。

3.统计字符串中字母个数或统计最多字母数

var str = 'aaaabbbcccccddfghhh';
var obj = {};
for(var i = 0; i < str.length; i++) {
    var v = str.charAt(i);
    if(obj[v] && obj[v].value == v) {
        obj[v].count = ++obj[v].count;
    }else {
        obj[v] = {};
        obj[v].count = 1;
        obj[v].value = v;
    }
}
for(key in obj) {
    console.log(obj[key].value + '=' + obj[key].count + '');
}

运行结果:
a=4
b=3
c=5
d=2
f=1
g=1
h=3

JavaScript电子书,包括了JavaScript的大部分知识,可以帮助读者快速入门。内容如下: 第1章 JavaScript语言概述 1.1 JavaScript是什么 1.1.1 JavaScript简史 1.1.2 JavaScript有何特点 1.2 JavaScript能做什么 1.2.1 表单数据合法性验证 1.2.2 页面特效 1.2.3 交互式菜单 1.2.4 动态页面 1.2.5 数值计算 1.3 JavaScript编程起步 1.3.1 “Hello World!”程序 1.3.2 选择JavaScript脚本编辑器 1.4 如何引入JavaScript脚本代码 1.4.1 通过与标记对引入 1.4.2 通过标记的src属性引入 1.4.3 通过JavaScript伪URL引入 1.4.4 通过HTML文档事件处理程序引入 1.5 嵌入JavaScript脚本代码的位置 1.5.1 在与标记对之间放置 1.5.2 在与标记对之间放置 1.5.3 在两个标记对之间混合放置 1.6 选择合适的浏览器 1.7 处理不支持JavaScript脚本的情况 1.7.1 使用标记对直接屏蔽法 1.7.2 使用和标记对给出提示信息 1.8 JavaScript实现基础 1.8.1 ECMAScript 1.8.2 DOM 1.8.3 BOM 1.9 客户端与服务器端脚本 1.10 JavaScript与JScript、 VBScript 1.11 JavaScript与Java、Java applet 1.12 JavaScript的未来如何 1.13 本章小结 第2章 JavaScript语言入门 2.1 编程准备 2.1.1 编程术语 2.1.2 脚本执行顺序 2.1.3 大小写敏感 2.1.4 空白字符 2.1.5 分号 2.1.6 块 2.2 数值类型 2.2.1 整型和浮点数值 2.2.2 八进制和十六进制 2.3 变量 2.3.1 变量标识符 2.3.2 变量申明 2.3.3 变量作用域 2.4 弱类型 2.5 基本数据类型 2.5.1 Number型 2.5.2 String型 2.5.3 Boolean型 2.5.4 Undefined型 2.5.5 Null型 2.5.6 Function型 2.6 组合类型 2.6.1 Array型 2.6.2 Object型 2.7 运算符 2.7.1 赋值运算符 2.7.2 基本数学运算符 2.7.3 位运算符 2.7.4 位移运算符 2.7.5 自加和自减 2.7.6 比较运算符 2.7.7 逻辑运算符 2.7.8 逗号运算符 2.7.9 空运算符 2.7.10 ?...:运算符 2.7.11 对象运算符 2.7.12 typeof运算符 2.7.13 运算符优先级 2.8 核心语句 2.8.1 基本处理流程 2.8.2 if条件假设语句 2.8.3 switch流程控制语句 2.8.4 for循环语句 2.8.5 while和do-while循环语句 2.8.6 使用break和continue进行循坏控制 2.8.7 with对象操作语句 2.8.8 使用for…in进行对象循坏 2.8.9 含标签的语句 2.9 函数 2.9.1 函数的基本组成 2.9.2 全局函数与局部函数 2.9.3 作为对象的函数 2.9.4 函数递归调用 2.9.5 语言注释语句 2.9.6 函数应用注意事项 2.10 本章小结 第3章 JavaScript事件处理 3.1 什么是事件 3.2 HTML文档事件 3.2.1 事件捆绑 3.2.2 浏览器事件 3.2.3 HTML元素事件 3.2.4 IE扩展的事件 3.3 JavaScript如何处理事件 3.3.1 匿名函数 3.3.2 显式声明 3.3.3 手工触发 3.4 事件处理器的返回值 3.5 事件处理器设置的灵活性 3.6 现代事件模型与Event对象 3.7 IE4中的Event对象 3.7.1 对象属性 3.7.2 事件上溯 3.7.3 阻止事件上溯 3.7.4 事件改向 3.8 NN4中的Event对象 3.8.1 对象属性 3.8.2 事件捕获 3.8.3 关闭事件捕获 3.8.4 事件传递 3.9 DOM的解决之道
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值