Javascript 与rest操作符和循环混淆

Javascript 与rest操作符和循环混淆,javascript,Javascript,我在兜圈子,努力寻找解决办法;任何教育/指导都会对我有帮助 我可能有很多数组,我正在这些数组上进行字符串操作 我创建了一个有用的调试函数,帮助我打印数组中元素的长度;后字符串操作 这是单阵列函数,它的工作原理;但是,我希望使用rest操作符,因为我希望将大量数组作为参数提供给它: let arr1 = ["one", "two", "three"]; let arr2 = ["four", "five", "six"]; function debug_qty(arr) { let pos

我在兜圈子,努力寻找解决办法;任何教育/指导都会对我有帮助

我可能有很多数组,我正在这些数组上进行字符串操作

我创建了一个有用的调试函数,帮助我打印数组中元素的长度;后字符串操作

这是单阵列函数,它的工作原理;但是,我希望使用rest操作符,因为我希望将大量数组作为参数提供给它:

let arr1 = ["one", "two", "three"];
let arr2 = ["four", "five", "six"];
function debug_qty(arr) {
    let post_arr_filter = arr.map(function(word) {
        return `${word.length}`;
    });
    return post_arr_filter;
};
我尝试了下面的方法,但它只打印第一个数组,当我附加.length时,得到的是3,而不是3,3,5(单个字符串的长度)

我的下一次尝试-这似乎找到了两个数组长度(我想),同样不是子元素

function calc_arr(...args) {
    let result = args.map(function(nums) {
        return nums.length;
    });
    return result;
}

我在兜圈子,所以任何指导都会很有帮助。:)

使用
for…in
方法的问题是,您在循环内部返回(还要注意,您实际上应该只使用,而不是数组索引)。
返回
会导致函数退出并随后结束循环

上一个代码片段的问题是,您将
num
视为单个数字,但是,
num
实际上是一个数组。当您执行
…args
args
时,它将成为您传递给它的所有参数的数组。如果您传递了
“一”和
“二”
参数,则参数将是
[“一”,“二”]
。如果您传递
[“一”、“二”]
[“三”、“四”]
参数将是一个数组
[“一”、“二”],[“三”、“四”]
。要使
.map()
函数正常工作,您确实希望正在处理的数组看起来像
[“一”、“二”、“三”、“四”]
,所有元素都在一个数组中。要获取此表单中的数组,可以使用
.flat()
,或者,因为您使用的是
.map()

function calc_arr(…args){
让结果=args.flat().map(函数(nums){
返回nums.length;
});
返回结果;
}
设arr1=[“一”、“二”、“三”];
设arr2=[“四”,“五”,“六];
控制台日志(calc_arr(arr1,arr2))使用
map()
函数两次,一次抓取数组,另一次抓取数组中的单词:

让arr1=[“一”、“二”、“三”];
设arr2=[“四”,“五”,“六];
函数计算arr(…args){
返回args.map((arr)=>{
返回arr.map((word)=>{
返回单词长度;
})
})
}
常数res=计算arr(arr1,arr2);

控制台日志(res)
您是否尝试过
让arr进入args
而不是
让arr进入args
?欢迎使用SO!请说明如何调用这些函数。如果传入整个数组而未进行扩展,则说明调用函数不正确。另外,对JS使用
camelCase
。谢谢-这非常有效!谢谢你的帮助,谢谢!通过您的指导,我学会了一个新函数“flat”,合并数组可以完成任务,您的代码片段也可以工作。但是,我的一些数组(字符串后处理)的长度超过300。所以数组中的描述是非常有用的。@NotAVeryGoodDeveloper所以你真的想要数组作为你的输出吗?嘿,晚上好-是的,这是正确的!array.from是另一个很棒的函数,我会错过的,谢谢@著名的食品开发者不用担心;)请注意,
flat
flatMap
是该语言最近添加的内容。如果你不幸与IE11合作,它们将无法工作。很多企业对企业的东西仍然使用IE。
function calc_arr(...args) {
    let result = args.map(function(nums) {
        return nums.length;
    });
    return result;
}