例如:
let arr = [1, 2, 3, 4, 5]
arr.forEach(function(item, index) {
if (index === arr.length - 1) {
console.log('This is the last item!')
}
})
首先js暂时还没有map类型。所以需要先自己定义一个Map类型。代码如下
function Map () {/**
* 结构
* @param key
* @param value
*/
function Struct(key,value) {
this.key = key
this.value = value
}
/**
* 数据存放数组
*/
this.arr = []
/**
* 增加数据
* @param key {String}
* @param value {Object}
*/
this.put = function (key,value) {
for (var i = 0 i < this.arr.length i++) {
if (this.arr[i].key === key) {
this.arr[i].value = value
return
}
}
this.arr[this.arr.length] = new Struct(key,value)
}
/**
* 通过key获取数据
* @param key {String}
* @returns {Object}
*/
this.get = function (key) {
for (var i = 0 i < this.arr.length i++) {
if (this.arr[i].key === key) {
return this.arr[i].value
}
}
return null
}
/**
* 删除数据
* @param key{String}
*/
this.remove = function (key) {
var v
for (var i = 0 i < this.arr.length i++) {
v = this.arr[i]
if (v.key === key) {
this.arr.splice(i,1)
return
}
}
}
/**
* 是否存在key
* @param key {String}
* @returns {boolean}
*/
this.containsKey = function (key) {
var v
for (var i = 0 i < this.arr.length i++) {
v = this.arr[i]
if (v.key === key) {
return true
}
}
return false
}
/**
* 获取map数据量
* @returns {Number}
*/
this.size = function () {
return this.arr.length
}
/**
* 判断Map是否为空
* @returns {boolean}
*/
this.isEmpty = function () {
return this.arr.length <= 0
}
/**
* 全部清空
*/
this.removeAll = function () {
this.arr = []
}
}
然后放入数据再做判断
var map = new Map()map.put("str",'aaaaaa')
console.log(map.get('str'))
//判断是否为Map类型。 instanceof
console.log(map instanceof Map)
1.JavaScript 的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。
2.类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。
3.如果对同一个键多次赋值,后面的值将覆盖前面的值。
4.只有对同一个对象的引用,Map 结构才将其视为同一个键。Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题。
5.如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键.