javascript中的数组与对象基本操作及underscore.js

数组与对象

数组与对象是javascript中最重要的数据结构,使用好它们,就可以非常灵活的处理各种数据了,因此需要好好的掌握这些它们的一些方法。

数组

创建数组

//创建一个空数组
var arr = new Array()
//创建一个有内容的数组
var arr = ['a','b',1,2,null,true]

数组的常用方法

//数组的长度
arr.length
//指定某个元素的索引,没有返回-1
arr.indexOf('a');
//取子集
arr.slice(3);//从索引3开始取值,一直到最后
arr.slice(0,3); //从0开始取值,一直到3结束,不包括3
arr.slice()复制一个arr
//向数组末尾中添加/删除元素
arr.push('a') //同python中列表的append()方法,想数组末尾添加一个元素
arr.push('a','b') //添加多个元素也可以哦
arr.pop() //将数组末尾元素弹出,如果数组中没有元素也不会报错,会返回undefined,
//同python中列表的方法pop()可以给弹出元素赋值变量标签
element = arr.pop()
//向数组开头添加/删除元素
arr.unshift('a','b')
arr.shift() //删除第一个元素
//翻转
arr.reverse()
//将多个元素或者数组合并为一个数组
var arr = [1,2,3],
    newarr = arr.concat(4,5,[6,7,8]);
[1,2,3,4,5,6,7,8]
//concat方法不同于其他方法,它返回一个新的数组
//将数组中的元素按照某个分隔符拼接成字符串
var astr = arr.join('-');

高阶函数

map()

将一个函数作用于一个数组的每一个元素,并返回一个列表

func = function(x) {return x+1}
arr.map(func)

function的参数第一个是数组对应的值,第二个是index

arr.map(function(element,index){
console.log("element is ",element,"index is ",index);
})
reduce()

它的作用说起来比较抽象,可以表示为如下的形式

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
filter()

该函数对数组进行筛选,返回一个数组

arr.filter(x => x<2),返回元素小于2的数组
sort()

默认的排序方式是按照ascii的顺序进行,为了让数组能够正确的排序,我们可以使用其中的回调函数

//从小到大排序
arr.sort(function(x,y){
if(x<y){return -1} else if (x > y ) {return 1}
})
//看起来就是返回1的时候,两个数字会调换,因此x>y时会将x放在后面

对象

创建对象

obj = {} //创建一个空对象
obj = { name:'xiaoming',age:23} //键可以加引号也可以不加

访问/创建对象中的键值对

//访问其中的值
obj.name 
obj.age
//创建新的键值对
obj.afk = 'coding master'
//判断某个值是否在这个对象中
obj.hasOwnProperty('name') //true
obj.hasOwnProperty('car') //false

underscore

underscore有一些非常快捷和方便的函数,可以用来简化操作

arr = [1,2,3]
_.map(arr,function(x){return x+1})
[2,3,4]
//特别需要注意的是,这个map返回一个列表,而且可以作用于对象
_.map(obj,function(value,key){...})
_.mapObject()返回的僵尸一个对象
_.every(arr,(x)=> x>1) //每一个元素都大于1返回true,否则false
_.some(arr,(x)=> x<1) //只要有一个元素小于1就返回true否则false
_.min(arr)
_.max(arr)
_.min(obj) //只关注值,不关注键
_.max(obj)
_.object(arr1,arr2) //将两个arr合并成一个对象
arr1 = [1,2,3]
arr2 = [3,4,5]
zip(arr1,arr2)将两个arr嵌套起来
[[1,3],[2,4],[3,5]]
_.range(0,10,2)
[0, 2, 4, 6, 8]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值