数组:
toString() 把数组转换成字符串,逗号分隔每一项
valueOf() 返回数组对象值本身
// 1 栈操作(先进后出)
push()
pop() //取出数组中的最后一项,修改length属性
// 2 队列操作(先进先出)
push()
shift() //取出数组中的第一个元素,修改length属性
unshift() //在数组最前面插入项,返回数组的长度
// 3 排序方法
reverse() //翻转数组
sort(); //即使是数组sort也是根据字符,从小到大排序
// 带参数的sort是如何实现的?
// 4 操作方法
concat() //把参数拼接到当前数组
slice() //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
splice() //删除或替换当前数组的某些项目,参数start, deleteCount, options(要替换的项目)
// 5 位置方法
indexOf()、lastIndexOf() //如果没找到返回-1
// 6 迭代方法 不会修改原数组(可选)
every()、filter()、forEach()、map()、reduce()、some()
// 7 方法将数组的所有元素连接到一个字符串中。
join()
String
// 1 字符方法
charAt() //获取指定位置处字符
charCodeAt() //获取指定位置处字符的ASCII码
str[0] //HTML5,IE8+支持 和charAt()等效
// 2 字符串操作方法
concat() //拼接字符串,等效于+,+更常用
slice() //从start位置开始,截取到end位置,end取不到
substring() //从start位置开始,截取到end位置,end取不到
substr() //从start位置开始,截取length个字符
// 3 位置方法
indexOf() //返回指定内容在元字符串中的位置
lastIndexOf() //从后往前找,只找第一个匹配的
// 4 去除空白
trim() //只能去除字符串前后的空白
// 5 大小写转换方法
to(Locale)UpperCase() //转换大写
to(Locale)LowerCase() //转换小写
// 6 其它
search()
replace()
split()
fromCharCode() //unicode转字符串
// String.fromCharCode(101, 102, 103);
前端特殊数据处理
<script>
/*
数组降维度展平 flat
[1, 2, 3, 4, [5, 6], [7, [8], 9], 10] = > [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
*/
var arr = [1, 2, 3, 4, [5, 6], [7, [8], 9], 10];
console.log(arr.flat(9));
/*
数组去重 (基础类型数组集合)
[1,2,3,4,5,1,'haha',23,4,5,'haha',false,1]
*/
function unique(arr) {
return arr.filter(function (item, idx, arr) {
//复合return条件的项目留下来 不符合的过滤掉
//判断当前项item 的下标
return arr.indexOf(item, 0) === idx;
//arr.indexOf(1, 0)=> 0 === 0 留下来
//arr.indexOf(1, 0)=> 0 === 11 过滤掉
});
}
function unique(arr) {
var newArr = [];
arr.forEach(function (item, idx) {
if (newArr.indexOf(item) === -1) {
newArr.push(item);
}
})
return newArr;
}
/*
数组去重 (包含引用类型)
[1,2,3,4,[1,2,3],[1,2,3],23,4,5,{a:1,b:2},false,{a:1,b:2},{a:1,b:2}]
[1, 2, 3, 4, Array(3), 23, 5, {…}, false]
*/
function uniqueObj(arr) {
var newArr = [];
var tempArr = [];
arr.forEach(function (item, idx) {
if (newArr.indexOf(item) === -1) {
if (tempArr.indexOf(JSON.stringify(item)) === -1) {
tempArr.push(JSON.stringify(item));
newArr.push(item);
}
}
});
return newArr;
}
/*
找出数组 arr 中重复出现过的元素 输出为新数组
[1,2,3,4,5,6,4,5,3,2,7]
[2, 3, 4, 5]
*/
function duplicates(arr) {
var resultArr = [];
arr.forEach(function (item, idx) {
if (arr.indexOf(item) != arr.lastIndexOf(item) && resultArr.indexOf(item) == -1) {
resultArr.push(item);
}
});
return resultArr;
}
console.log(duplicates([1, 2, 3, 4, 5, 6, 4, 5, 3, 2, 7]));
/*
移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
[1,2,3,4,5,2,3,2,5,2] , 2=> [1, 3, 4, 5, 3, 5]
*/
function removeWithoutCopy(arr, item) {
for (var i = arr.length - 1; i > 0; i--) {
if (arr[i] === item) {
arr.splice(i, 1);
}
}
return arr;
}
console.log(removeWithoutCopy([1, 2, 3, 4, 5, 2, 3, 2, 5, 2], 2));
/*
从某数据库接口得到如下值:
{
rows: [
["Lisa", 16, "Female", "2000-12-01"],
["Bob", 22, "Male", "1996-01-21"]
],
metaData: [
{ name: "name", note: '' },
{ name: "age", note: '' },
{ name: "gender", note: '' },
{ name: "birthday", note: '' }
]
}
rows是数据,metaData是对数据的说明。现写一个函数parseData,将上面的对象转化为期望的数组:
[
{ name: "Lisa", age: 16, gender: "Female", birthday: "2000-12-01" },
{ name: "Bob", age: 22, gender: "Male", birthday: "1996-01-21" },
]
*/
var data = {
rows: [
["Lisa", 16, "Female", "2000-12-01"],
["Bob", 22, "Male", "1996-01-21"]
],
metaData: [
{ name: "name", note: '' },
{ name: "age", note: '' },
{ name: "gender", note: '' },
{ name: "birthday", note: '' }
]
}
var resultData;
function formatting(data) {
var rows = data.rows;
var metaData = data.metaData;
if (!Array.isArray(rows) || !Array.isArray(metaData) || rows.length === 0 || metaData.length === 0) {
return [];
}
return rows.map(function (item, idx, arr) {
return item.reduce(function (acc, curr, idx) {
acc[metaData[idx]['name']] = curr;
return acc;
}, {});
})
}
/*
将下面这个对象转为数组 并实现 一个排序方法 一个筛选方法
formattingSort('height'); 调用 formattingSort 传参 'height' 就以height属性值为排序属性 升序排序
[{
name: 'Dan',
age: 1,
sex: 1,
weight: '79kg',
height: '110cm'
},
{
name: 'meney',
age: 4,
sex: 1,
weight: '69kg',
height: '160cm'
},
{
name: 'joker',
age: 1,
sex: 0,
weight: '99kg',
height: '190cm'
},
{
name: 'jojo',
age: 18,
sex: 1,
weight: '90kg',
height: '195cm'
},
{
name: 'stack',
age: 99,
sex: 1,
weight: '199kg',
height: '1190cm'
}]
formattingFilter('age',function(item){
return item > 10;
});
调用 formattingFilter 传参 'age' 和回调函数
以age属性为过滤条件 条件为 function回调函数的return公式
[{
name: 'jojo',
age: 18,
sex: 1,
weight: '90kg',
height: '195cm'
},
{
name: 'stack',
age: 99,
sex: 1,
weight: '199kg',
height: '1190cm'
}]
*/
var oData = {
'joker': {
age: 1,
sex: 0,
weight: '99kg',
height: '190cm'
},
'meney': {
age: 4,
sex: 1,
weight: '69kg',
height: '160cm'
},
'Dan': {
age: 1,
sex: 1,
weight: '79kg',
height: '110cm'
},
'jojo': {
age: 18,
sex: 1,
weight: '90kg',
height: '195cm'
},
'stack': {
age: 99,
sex: 1,
weight: '199kg',
height: '1190cm'
}
}
/*
*/
</script>