JavaScripts 数组 Json相关

数组
 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('存在该元素!');
     }
  });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章