1.找到字符串'woainixiaoli'中的每一个'i'出现的位置。
var arr = 'woainixiaoli';
var index = -1; //定义变量index控制索引值
//当查找不到a,即indexOf()的值为-1时,结束循环
do {
index = arr.indexOf("i", index + 1); //使用第二个参数index+1,控制每一次查找都是从上一次查找到字符a的下一个索引位置开始
if(index != -1) { //可以找到字符i
console.log(index); //输出a的位置
}
} while (index != -1);
2.在一个字符串中,如 'zhaochucichuzuiduodezifu',我们要找出出现最多的字符。
var str = "nininihaoa";
var o = {};
for(var i = 0, length = str.length; i < length; i++) {
var char = str.charAt(i);
if(o[char]) {
o[char]++; //次数加1
} else {
o[char] = 1; //若第一次出现,次数记为1
}
}
console.log(o); //输出的是完整的对象,记录着每一个字符及其出现的次数
//遍历对象,找到出现次数最多的字符的次数
var max = 0;
for(var key in o) {
if(max < o[key]) {
max = o[key]; //max始终储存次数最大的那个
}
}
for(var key in o) {
if(o[key] == max) {
//console.log(key);
console.log("最多的字符是" + key);
console.log("出现的次数是" + max);
}
}
3.数组去重
Array.prototype.unique1 = function() {
var n = []; //一个新的临时数组
for(var i = 0; i < this.length; i++) //遍历当前数组
{
//如果当前数组的第i已经保存进了临时数组,那么跳过,
//否则把当前项push到临时数组里面
if(n.indexOf(this[i]) == -1)
n.push(this[i]);
}
return n;
}
Array.prototype.unique2 = function() {
var n = {},
r = []; //n为hash表,r为临时数组
for(var i = 0; i < this.length; i++) //遍历当前数组
{
if(!n[this[i]]) //如果hash表中没有当前项
{
n[this[i]] = true; //存入hash表
r.push(this[i]); //把当前数组的当前项push到临时数组里面
}
}
return r;
}
4.穷举所有子序列
var arr = ['a', 'b', 'c', 'd'];
var list = [''];
for(var i = 0, len = arr.length; i<len ; i++ ){
list.forEach(x => {
list.push(x + arr[i]);
});
}
console.log(list.sort()); // 排序一下,方便查看
5.取到页面中所有的checkbox
var domList = document.getElementsByTagName(‘input’)
var checkBoxList = [];
var len = domList.length; //缓存到局部变量
while (len--) { //使用while的效率会比for循环更高
if (domList[len].type == ‘checkbox’) {
checkBoxList.push(domList[len]);
}
}