兼容写法:
document.getElementById('元素id')高级浏览器写法(支持>=IE8,及其他浏览器):
document.querySelector('#元素id')我有一个想法就是首先遍历该集合,然后将id替换成有序的索引
for(var i = 0 ,i<list.length ,i++){
list[i].id=i
}
通过该id的索引可以很方便的找出数组中对应的变量,
list[对象.id]
这样做适合于大量数据查找对应属性的操作,只需要遍历一遍,后续的所有查找动作都可以通过索引直接完成。
经过本人测试
find方法比直接遍历慢十倍,比直接通过索引查询慢一百倍,
综上,还不如直接用遍历来的快些!
测试代码如下:
<!DOCTYPE html><html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<p>点击按钮返回符合大于输入框中指定数字的数组元素。</p>
<p>最小年龄: <input type="number" id="ageToCheck" value="18"></p>
<button onclick="myFunction()">find方法点我</button>
<button onclick="Fun()">遍历方法点我</button>
<button onclick="FunIndex()">直接找的方法</button>
<p>值: <span id="demo"></span></p>
<p><strong>注意:</strong> IE 11 及更早版本不支持 findIndex() 方法。</p>
<script>
//测试结果很现实,遍历比find要快太多
var ages = []
for(var i =0 i<1000000i++){
ages.push(i)
}
function checkAdult(age) {
return age == document.getElementById("ageToCheck").value
}
function myFunction() {
var start = new Date().getTime()
document.getElementById("demo").innerHTML = ages.find(checkAdult)
console.log("find查找耗时 :" +(new Date().getTime()-start))
}
function Fun() {
var start = new Date().getTime()
var value = document.getElementById("ageToCheck").value
for(var i =0 i<ages.length i++){
if(i==value){
document.getElementById("demo").innerHTML =i
console.log("直接遍历耗时 :" +(new Date().getTime()-start))
return
}
}
}
function FunIndex(){
var start = new Date().getTime()
document.getElementById("demo").innerHTML =ages[document.getElementById("ageToCheck").value]
console.log("数组索引查找耗时 :"+(new Date().getTime()-start))
}
</script>
</body>
</html>
测试结果如下: