gpt4 book ai didi

javascript - 简单值仅返回一些数组元素而不是全部

转载 作者:行者123 更新时间:2023-11-28 12:57:45 25 4
gpt4 key购买 nike

我创建了一个简单的变量“indexes”,它成功识别了数组“arr”中奇数的索引,并且先前的值是奇数,并且它不测试第一个数字。但是,在定义索引变量时,它最初返回:

[undefined, 1, 2, undefined, undefined]

然后我必须过滤掉未定义的值以实现我想要的 ([1,2])。

有没有一种方法可以在一行中完成此操作而不需要过滤?我想不出办法。另外,是否有一种方法只返回某些元素的数组值,而不是像 map 那样返回所有元素?我想使用 some 方法,但它只返回一个 bool 值,而不是一个仅包含一些项目的数组。

感谢您的帮助。我的代码如下:

let arr = ["9", "9", "9", "4", "6"];
let indexes = arr.map(function(c,i,a){if (i != 0 && c % 2 != 0 && a[i-1] % 2 != 0) {return i} }); // [undefined, 1, 2, undefined, undefined]
indexes = indexes.filter(item => item !== undefined); // [1,2]

最佳答案

您可以使用reduce函数,它允许您迭代集合并累积您想要的任何数据:

let arr = ["9", "9", "9", "4", "6", "7"];
let indexes = arr.reduce((acc, el, index) => {
if (index != 0 && el % 2 != 0 && arr[index-1] % 2 != 0) {
acc.push(index);
}
return acc;
}, []);

其实,filtermap可以很容易地使用reduce来实现,因为你可以初始化一个空数组,然后根据回调函数,您可以将元素添加到最终数组或操作每个元素的值。

关于javascript - 简单值仅返回一些数组元素而不是全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53517183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com