最后一个没有循环的索引数组

时间:2015-04-22 17:26:08

标签: javascript object position

早上好/下午

我想创建一个模拟数组的对象,对于新的浏览器没有pb我改变了我的数组的 proto 但是对于最旧版本的IE我需要知道我的错误的长度数组通过查找最后一个索引。 我找到了IE的方法:

var getLastPos = function(){
    for( var i in falseArray){
       //do nothing
    }
    return i 
}

但如果存在更快的方式,那就更像了。我试图将正则表达式传递给lastindexof 但它似乎不起作用 感谢。

2 个答案:

答案 0 :(得分:0)

如果要从数组中找到最后一个索引,请使用

<array>.length 

所以你不需要for循环和你的函数,使用

falseArray.length

如果您需要上一个位置的值,请​​使用以下内容:

falseArray[falseArray.length-1] 
//decrement by one, because the index from the array starts by 0

我希望这有用。

答案 1 :(得分:0)

谢谢你回复, 这是一个老问题,但我会回答,我的目标是创建一个错误的数组,以便不污染原型。 假数组是指一个对象,它具有与具有.length属性的数组相同的行为,并使用&#39; []&#39;。

我的结论是,只有在新的浏览器类级才允许修改原型

例如:

 var myClassArray = function(){
        var obj = []
        obj.__proto__ = myClassArr.prototype
        return obj
    }
    myClassArr.prototype = Array;//inheritance
    myClassArr.prototype.last = function(){
        return this[this.length-1]
    }

或对象级别的旧浏览器

var myClassArray = function(){
    var obj = []
    obj.last=  function(){
       return this[this.length-1]
    }
    return obj
}

如何使用它:

var myArray = new myClassArray;
console.log(myArray.length) //0
myArray[5]=1;
console.log(myArray.length) //6
console.log(myArray.last()) //1

结论: 修改原型是一个关于性能和旧浏览器的坏主意。  您可以通过在类构造函数之外创建函数来改进旧浏览器的代码,否则浏览器将复制函数。

 var last = function(){
     return this[this.length-1]
 }
  var myClassArray = function(){
        var obj = []
        obj.last = last
        return obj
    }

var a = new myClassArray
var b = myClassArray()//In fact new is facultative
b.last == a.last //same ref no duplication