数组
1、数组的长度可变、不会产生数组越界问题
2、同一数组中的元素类型可以不同
3、访问未赋值的数组元素时,该元素的值为undefind
json 相关操作
json --> 数组
let jsonObj = {'未完成':5, '已完成':8, '待确认':4, '已取消':6};
let arr = []
for (let i in jsonObj) {
let item = {};
item[i] = jsonObj[i];
arr.push(item);
}
console.log(arr); // [{未完成: 5},{已完成: 8},{待确认: 4},{已取消: 6}]
获取json对象长度
let jsonlen=0;
for(let key in brokers){
jsonlen ++;
}
数组相关操作
splice() : 删除数组元素,并返回删除后的数组
var arr1 = ["小明","小刚","小白","小熊"];
var arr2 = [];
arr2 = arr1.splice(2,1);
console.log(arr1); // ["小明", "小刚", "小熊"]
console.log(arr2); // ["小白"]
filter:对数组元素进行过滤,返回数组
语法:array.filer(function(value, index, array) {// ...});
(1) 筛选排除所有较小的值
var data = [12, 2, 8, 44,130];
var arrayOfSquares = data.filter(item =>{
return item > 10;
});
console.log(arrayOfSquares); // 12,44,130
(2) 根据条件过滤数组内容
var users = [
{name: "张一", "email": "[email protected]"},
{name: "江二", "email": "[email protected]"},
{name: "李三", "email": "[email protected]"},
{name: "王二", "email": "[email protected]"}
];
var userArr = users.filter(item =>{return item.name.indexOf('二')>-1});
console.log(userArr); // [{name: "江二", "email": "[email protected]"},{name: "王二", "email": "[email protected]"}];
map:对数组元素进行处理,返回数组
语法:array.map(function(value, index, array) {// ...});
(1) 原数组被“映射”成对应新数组
var data = [1, 2, 3, 4];
var arrayOfSquares = data.map(function (item) {
return item * item;
});
console.log(arrayOfSquares); // 1, 4, 9, 16
(2) 获得数组中的特定属性值
var users = [
{name: "张一", "email": "[email protected]"},
{name: "江二", "email": "[email protected]"},
{name: "李三", "email": "[email protected]"}
];
var emails = users.map(function (user) { return user.email; });
console.log(emails.join(", ")); // [email protected], [email protected], [email protected]
(3)向数组新增属性
var users = [
{name: "张一", "email": "[email protected]"},
{name: "江二", "email": "[email protected]"},
{name: "李三", "email": "[email protected]"}
];
users = users.map(function (user,index) {
user.index = index;
return user;
});
console.log(JSON.stringify(users)); // [{"name":"张一","email":"[email protected]","index":0},{"name":"江二","email":"[email protected]","index":1},{"name":"李三","email":"[email protected]","index":2}]
sort: 对数组元素进行排序,返回数组
语法: arr.sort(compareFunction)
compareFunction 可选,如果省略,元素根据字符串Unicode码点进行默认排序
compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前
compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变(不保证所有浏览器顺序一定这样)
compareFunction(a, b) 大于 0 , b 会被排列到 a 之前
码点参考:http://www.ruanyifeng.com/blog/2014/12/unicode.html
(1) 比较数字
var number = [21,37,45,-12,0,37];
// number.sort((a,b) => a - b); //升序排列
number.sort((a,b) => b - a); //降序排列
console.log(number); //[45, 37, 37, 21, 0, -12]
(2) 比较对象
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic',value: 0 },
{ name: 'Zeros', value: 37 }
];
items.sort( (a, b) => a.value - b.value);
console.log(items); //[{name: "The", value: -12},{name: "Magnetic", value: 0},{name: "Edward", value: 21},{name: "Sharpe", value: 37},{name: "Zeros", value: 37},{name: "And", value: 45}]
参考:关于ES3、ES5、ES6以及ES7所有数组的方法(api)的总结
判断数组中是否存在某个对象
(1) 数组元素是基本类型
var arr = [1,2,3,4];
arr.indexOf(3); // 2
(2) 数组元素是对象
var arr = [{'name': 'tom'},{'name': 'jerry'},{'name':'jack'}];
arr.map(item =>{
if(item.name == 'jack'){
console.log('存在该元素!');
}
});