基础知识:
复制数组:
(1)循环遍历复制(不推荐)
代码如下:
var
arry
=
[1,5,9,7],
new_arry
=
[],
n
=
0,
len
=
arry.length
for(n<lenn++){
new_arry.push(arry[n])
}
(2)concat()
方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
代码如下:
var
arry
=
[1,5,9,7],
new_arry
=
arry.concat()
console.log(new_arry)
(3)slice()
方法可从已有的数组中返回选定的元素
代码如下:
var
arry
=
[1,5,9,7],
new_arry
=
arry.slice(0)
console.log(new_arry)
随机数:
Math.random()
Math.random(),返回0到1的随机数,如:0.4261967441998422
个人封装函数:
代码如下:
function
getRandom(opt)
{
var
old_arry
=
opt.arry,
range
=
opt.range
//防止超过数组的长度
range
=
range
>
old_arry.length?old_arry.length:range
var
newArray
=
[].concat(old_arry),
//拷贝原数组进行操作就不会破坏原数组
valArray
=
[]
for
(var
n
=
0
n
<
range
n++)
{
var
r
=
Math.floor(Math.random()
*
(newArray.length))
valArray.push(newArray[r])
//在原数组删掉,然后在下轮循环中就可以避免重复获取
newArray.splice(r,
1)
}
return
valArray
}
var
new_val
=
getRandom({'arry':[1,6,8,0,3],'range':3})
console.log(new_val)
是不是很好用呢,非常实用的代码,这里是从本人项目中分离出来分享给大家,希望对大家有所帮助。
function searchKeys(needle, haystack){var result = [] for (i in haystack){if (haystack[i] == needle){result.push(i)}}return result} var array = [1,2,1,3,1,4,1,5,1,1]var val = 1var result = searchKeys(val, array)alert(result)