indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

stringObject.indexOf(searchvalue,fromindex)
参数 描述
searchvalue 必需。规定需检索的字符串值。

fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。

​ 如省略该参数,则将从字符串的首字符开始检索。

charAt(i); 获取字符串中对应索引的字符

sort() 方法用于对数组的元素进行排序。arrayObject.sort(sortby),参数可选,规定排序顺序,必须是函数。

​ 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序

​ 进行排序。
要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,

就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。

比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。

Object.keys(obj)//obj要返回可枚举的属性的对象。返回值:一个字符串数组,表示给定对象的所有可枚举属性。

/**const object1 = {
a: ‘somestring’,
b: 42,
c: false
};

console.log(Object.keys(object1));
// expected output: Array [“a”, “b”, “c”]
**/

map()/forEach()/filter()

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
array.map(function(currentValue,index,arr), thisValue)
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略了 thisValue ,”this” 的值为 “undefined”

//数组去重方法
//Set数据结构,它类似于数组,其成员的值都是唯一的,利用Array.from将Set结构转换成数组
//方法一,可快速返回去重后的数组

1
2
3
4
5
6
function dedupe(arr)
{
return Array.from(new Set(arr))
}
var arr=[1,2,3,2,2,1,4]
console.log(dedupe(arr));//[1,2,3,4]

//方法二,可去重,也可用来返回删掉的数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Array.prototype.distinct=function(){
var arr=this,
result=[],
len=arr.length;
arr.forEach(function(v,i,arr)//也可以利用map,filter方法
{
var bool=arr.indexOf(v,i+1);//从传入参数的下一个索引值开始寻找是否存在重复
if(bool==-1){
result.push(v);
}

})
return result;

}
var arr=[1,2,3,2,2,1,4]
console.log(arr.distinct());//[1,2,3,4]

//查找字符串中出现次数最多的字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var str = "nininihaoa";

var obj= {};//定义一个存储键值对的对象,存储每个字符和其对应的次数

for (var i = 0, length = str.length; i < length; i++) {
//获取每个下标对应的字符,charAt函数用来返回索引为i对应的字符
var char = str.charAt(i);
//判断对象中是否已经存在该字符属性
if (obj[char]) {
obj[char]++; //次数加1
} else {
obj[char] = 1; //若第一次出现,将该字符作为属性添加进对象,并且设置属性值即次数记为1
}
}

console.log(obj); //输出的是完整的对象,记录着每一个字符及其出现的次数
//遍历对象,找到出现次数最多的字符的次数
var max = 0;
for (var key in obj) {
if (max < obj[key]) {
max = obj[key]; //max始终储存次数最大的那个
}
}

for (var key in obj) {
if (obj[key] == max) {
//console.log(key);
console.log("最多的字符是" + key);
console.log("出现的次数是" + max);
}
}