生成一个长度为m,每一项都是n的数组

本文介绍了一道编程题目,要求编写一个不使用循环的函数,该函数接受两个参数m和n,返回一个长度为m且所有元素都为n的数组。作者通过递归的方法解决了这个问题。

今天看到一个题目,要求写一个函数,参数为m,n,生成一个长度为m,每一项都是n的数组,不能用循环。

刚看到前半部分,感觉so easy  但是看到不能用循环几个字,心里就咯噔一下(大家不要见怪,本人初入前端,涉坑未深)。那该怎么办呢?

想了一会,用递归吧。 代码如下

function creatAry(m, n) {
    var ary = [];
    function aryPush(m, n) {
        if (ary.length == m)return ary;//递归结束条件
        ary.push(n);
        return aryPush(m, n);//这里必须要写return,否则输出为undefined
    }
    return (aryPush(m, n))
}
console.log(creatAry(3, 4));

或许还有其他的方法,但是我能想到的兼容的方法就这一个了,欢迎补充!

<think>嗯,用户想在鸿蒙系统中快速生成一个长度为20的数组的示例代码。我需要先回忆一下鸿蒙开发的相关知识,尤其是ArkTS和Node-API的部分。根据引用[1],ForEach渲染循环时生成键值,可能涉及到数组的操作。ArkTS是鸿蒙的主要开发语言,所以应该用ArkTS来写示例。 首先,生成固定长度数组,常见的方法是使用数组构造函数或者循环。比如在JavaScript中,可以用Array(20).fill(0),但ArkTS是否支持呢?或者可能需要用其他方式。另外,引用[3]提到了NDK的使用,但用户可能需要的是应用层的代码,而不是底层C++的。所以应该优先考虑ArkTS的解决方案。 然后,考虑用户可能需要不同类型的数组,比如数字、字符串,或者随机数。应该提供几个不同的例子,这样更全面。例如,生成一个0到19的数组,可以用Array.from({length:20}, (_,i)=>i),或者在ArkTS中可能需要不同的语法。另外,生成随机数的数组,可能需要用到Math库的函数。 还要注意代码的正确性,确保语法符合ArkTS的要求。例如,ArkTS是TypeScript的超集,可能支持类似的数组操作方法。同时,引用[1]中的例子使用了ForEach,可能需要为数组生成键值,所以在示例代码中可以提到键值生成的方法,比如使用索引或者唯一标识符。 最后,用户可能需要知道如何应用这个数组,比如在UI中渲染,所以可以补充说明如何使用ForEach来遍历数组。这样回答会更完整,满足用户的实际需求。</think>在鸿蒙系统(HarmonyOS)中,可以通过ArkTS语言快速生成指定长度数组。以下是三种典型实现方式及代码示例: ### 方法一:基础数值数组(预填充) ```typescript // 生成[0,1,2,...,19]的数组 let array1: number[] = Array.from({length: 20}, (_, index) => index); ``` ### 方法二:随机数数组 ```typescript // 生成20个0-99的随机整数 let array2: number[] = Array.from({length: 20}, () => Math.floor(Math.random() * 100)); ``` ### 方法三:对象数组(带唯一标识符) ```typescript // 生成包含唯一键值的对象数组 class DataItem { key: string; value: number; constructor(index: number) { this.key = `item_${index}`; // 符合ForEach键值生成规范[^1] this.value = index * 2; } } let array3: DataItem[] = Array.from({length: 20}, (_, i) => new DataItem(i)); ``` ### 应用示例(配合UI渲染): ```typescript @Entry @Component struct Index { @State dataArray: DataItem[] = array3; build() { Column() { ForEach(this.dataArray, (item: DataItem) => { Text(`Value: ${item.value}`) .fontSize(16) .margin(5) }, (item: DataItem) => item.key // 键值生成规则[^1] ) } } } ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值