indexOf 返回元素在数组的索引,没有则返回-1。与string的indexOf方法差不多。 如果其他浏览器没有实现此方法,可以用以下代码实现兼容: 代码如下: Array.prototype.indexOf = function(el, start) { var start = start || 0; for ( var i=0; i < this.length; ++i ) { if ( this[i] === el ) { return i; } } return -1; }; var arra
JavaScript中的Array对象是编程中非常重要的数据结构,用于存储一系列有序的值。在JavaScript的不同版本和不同的浏览器环境中,Array对象的某些方法可能不被所有浏览器支持。为了确保代码的兼容性和可移植性,我们可以手动扩展Array的方法。这里我们将讨论如何为不支持这些方法的浏览器实现`indexOf`、`lastIndexOf`、`forEach`、`every`和`some`。
1. **indexOf方法**:
`indexOf`方法用于查找指定元素在数组中的索引,如果不存在则返回-1。在JavaScript中,这是一个基本的查找功能,类似于字符串的`indexOf`方法。如果没有实现,可以按照以下方式添加:
```javascript
Array.prototype.indexOf = function(el, start) {
var start = start || 0;
for (var i = start; i < this.length; ++i) {
if (this[i] === el) {
return i;
}
}
return -1;
};
var array = [2, 5, 9];
var index = array.indexOf(2); // index is 0
index = array.indexOf(7); // index is -1
```
2. **lastIndexOf方法**:
`lastIndexOf`方法类似于`indexOf`,但它从数组的末尾开始查找,并返回最后一个匹配项的索引。如果未实现,可以这样添加:
```javascript
Array.prototype.lastIndexOf = function(el, start) {
var start = start || this.length - 1;
for (var i = start; i >= 0; --i) {
if (this[i] === el) {
return i;
}
}
return -1;
};
```
3. **forEach方法**:
`forEach`方法用于遍历数组的每个元素,执行提供的函数。如果浏览器不支持,可以实现如下:
```javascript
Array.prototype.forEach = function(fn, thisObj) {
var scope = thisObj || window;
for (var i = 0, j = this.length; i < j; ++i) {
fn.call(scope, this[i], i, this);
}
};
function printElt(element, index, array) {
console.log("[" + index + "] is " + element);
}
[2, 5, 9].forEach(printElt); // 输出: [0] is 2 [1] is 5 [2] is 9
```
4. **every方法**:
`every`方法用于检查数组的所有元素是否都符合给定的测试条件。如果所有元素都通过,返回`true`,否则返回`false`。
```javascript
Array.prototype.every = function(fn, thisObj) {
var scope = thisObj || window;
for (var i = 0, j = this.length; i < j; ++i) {
if (!fn.call(scope, this[i], i, this)) {
return false;
}
}
return true;
};
function isBigEnough(element, index, array) {
return (element <= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough); // passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough); // passed is true
```
5. **some方法**:
`som