EasyClick 数组随机取值

EasyClick 数组随机取值


/**
 * @作者 Mr_老鬼 QQ:1156346325
 * @函数用途   随机生成字符串
 * @创建时间 15:37 2021-10-31
 * @参数  arr 要取随机值的数组 count 随机值个数
 * @return   数组随机值
 **/
function getRandomArrayElements(arr, count) {
    let shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
    while (i-- > min) {
        index = Math.floor((i + 1) * Math.random());
        temp = shuffled[index];
        shuffled[index] = shuffled[i];
        shuffled[i] = temp;
    }
    return shuffled.slice(min);
}
var items = ['1','2','4','5','6','7','8','9','10'];
// 例子
getRandomArrayElements(items,5);

我是Mr-老鬼、QQ1156346325 。交流QQ群:620028786,647082990,772810035
————————————————版权声明——————————————————
本文版权所有~Mr-老鬼 ~转载请注明原文地址
免责声明:本文所有的教程仅限交流学习使用不得用于违法用途,造成的法律后果本人不承担责任。

<think>好的,我现在需要帮助用户了解如何在Lua语言中从数组取值。首先,我得回想一下Lua数组的基本知识。Lua中的数组通常是用表(table)来实现的,索引默认从1开始,这点和其他编程语言不同,比如JavaScript或Python是从0开始的。用户可能对这一点不太熟悉,需要特别强调。 接下来,我应该分步骤介绍如何取值。首先是基本索引,比如array[1]获取第一个元素。然后要提到数组的灵活性,比如索引可以是负数或非连续数字,但这种情况不常见。可能需要举例子说明,比如创建一个数组,然后访问不同位置的元素。 然后,用户可能想知道如何遍历数组。这里需要介绍两种方式:ipairs和pairs。ipairs适用于连续数字索引,而pairs可以遍历所有键,但顺序不保证。要提醒用户注意两者的区别,特别是在数组中有空洞时,ipairs会在第一个nil处停止。 另外,用户可能对多维数组感兴趣,需要解释如何通过嵌套表来实现,并展示如何访问多维数组的元素,比如matrix[1][2]。 还要提到数组长度的问题,使用#操作符获取长度,但注意如果有空洞可能会不准确。此时可能需要建议使用table.getn或者在不确定时自行处理。 最后,总结关键点,确保用户理解索引从1开始,多种遍历方式,以及多维数组的结构。检查是否有遗漏的部分,比如错误处理或常见错误,但用户的问题主要是取值,可能不需要深入错误处理。确保例子清晰,语法正确,符合Lua的规范。</think>在Lua语言中,数组实际上是通过`table`(表)实现的。以下是数组取值的详细步骤和注意事项: --- ### 1. **基本索引取值** Lua数组默认使用**整数索引**,且**索引从1开始**(不同于其他语言从0开始): ```lua local fruits = {"苹果", "香蕉", "橙子"} -- 取第一个元素 print(fruits[1]) --> 输出: 苹果 -- 取第三个元素 print(fruits[3]) --> 输出: 橙子 ``` --- ### 2. **非连续索引与负数索引** Lua允许灵活定义索引,但需注意索引是否有效: ```lua local arr = {} arr[1] = "A" arr[5] = "E" arr[-2] = "Z" print(arr[5]) --> 输出: E print(arr[-2]) --> 输出: Z print(arr[3]) --> 输出: nil(未赋值的位置默认nil) ``` --- ### 3. **遍历数组取值** #### (1) 使用 `ipairs` 遍历连续数字索引 ```lua for index, value in ipairs(fruits) do print(index, value) end -- 输出: -- 1 苹果 -- 2 香蕉 -- 3 橙子 ``` ⚠️ `ipairs` 遇到`nil`时会停止遍历(适合连续数组)。 #### (2) 使用 `pairs` 遍历所有键 ```lua for key, val in pairs(arr) do print(key, val) end -- 输出: -- 1 A -- 5 E -- -2 Z ``` ⚠️ `pairs` 会遍历所有非nil键,顺序不固定。 --- ### 4. **多维数组取值** 通过嵌套table实现多维数组: ```lua local matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} } -- 取第二行第三列的元素 print(matrix[2][3]) --> 输出: 6 ``` --- ### 5. **获取数组长度** 使用 `#` 操作符获取**连续部分的最大索引**: ```lua print(#fruits) --> 输出: 3 print(#arr) --> 输出: 1(因arr[5]是非连续的) ``` --- ### 总结 - Lua数组索引**从1开始**,使用`table`结构。 - 通过`table[index]`直接访问元素。 - 遍历时根据需求选择`ipairs`(连续索引)或`pairs`(所有键)。 - 多维数组通过嵌套table实现,逐层访问即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr -老鬼

对你有用的话请我喝个咖啡呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值