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