我正四处逛逛,努力寻找解决方案;任何教育/指导都会对我有所帮助。
我可能有很多要进行字符串处理的数组。
我创建了一个有用的调试功能,以帮助我打印数组中元素的长度;发布字符串操作。
这是单数组函数,它的工作原理;但是我想使用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(各个字符串的长度)。
let arr1 = ["one", "two", "three"];
let arr2 = ["four", "five", "six"];
function check_length(...args) {
for (let arrs in args) {
return args[arrs].length;
};
};
我的下一个尝试-这似乎是找到两个数组长度(我认为),再次不是子元素。
function calc_arr(...args) {
let result = args.map(function(nums) {
return nums.length;
});
return result;
}
我正四处逛逛,所以任何指导都是最有帮助的。 :)
使用map()
函数两次,一次获取数组,再一次获取其中的单词:
let arr1 = ["one", "two", "three"];
let arr2 = ["four", "five", "six"];
function calc_arr(...args) {
return args.map((arr) => {
return arr.map((word) => {
return word.length;
})
})
}
const res = calc_arr(arr1,arr2);
console.log(res);
for...in
方法的问题在于,您将返回inside循环(还请注意,您实际上应该仅使用for...in
for iterating object properties,而不是数组索引)。 for...in
使您的函数退出,然后结束循环。
最后一个代码段的问题是您将return
视为一个数字,但是num
实际上是一个数组。当您执行num
时,...args
成为所有参数的数组。如果传递args
和"one"
,则args将为"two"
。如果传递["one", "two"]
,["one", "two"]
,["three", "four"]
,则将是数组args
的数组。为了使[["one", "two"], ["three", "four"]]
函数正常工作,您确实希望正在处理的数组看起来像.map()
,并且所有元素都在一个数组中。要以这种形式获取数组,可以使用["one", "two", "three", "four"]
,或者,因为使用的是.flat()
:
.map()
或者,您可以使用function calc_arr(...args) {
let result = args.flat().map(function(nums) {
return nums.length;
});
return result;
}
let arr1 = ["one", "two", "three"];
let arr2 = ["four", "five", "six"];
console.log(calc_arr(arr1, arr2));
,它将回调函数返回的数组展平为一个更大的数组。这意味着.flatMap()
的回调函数将需要返回一个计数数组:
.flatMap()
如果要数组数组,可以将function calc_arr(...args) {
return args.flatMap(arr => arr.map(str => str.length));
}
let arr1 = ["one", "two", "three"];
let arr2 = ["four", "five", "six"];
console.log(calc_arr(arr1, arr2));
与映射功能一起使用:
Array.from