一行数组迭代器 javascript
One line Array iterator javascript
我来自 Python,我正在为任何数组寻找 单行迭代器函数 ,我可以 也检查条件和return对项目的简单更改。
预期结果应符合方法:
function arrayEvenItemIncrement(myArray){
for (let i = 0; i < myArray.length; i++){
if (myArray[i]%2==0){
myArray[i]++;
}
}
return myArray;
}
我尝试使用 for (i of myArray){ }
,但这仍然不能满足我的目的。
我认为在这里做你想做的最清楚的方法是映射到一个新数组而不是改变旧数组:
const arrayEvenItemIncrement = myArray =>
myArray.map((val, i) => i % 2 === 1 ? val : val + 1);
如果您改变现有数组,它会变得更加丑陋。
const arrayEvenItemIncrement = myArray => (
myArray.forEach((val, i) => { if (i % 2 === 0) myArray[i]++; }), myArray);
或
const arrayEvenItemIncrement = myArray => {
myArray.forEach((val, i) => { if (i % 2 === 0) myArray[i]++; }); return myArray };
但我不建议这样做 - 而是将其放在多行上。
从技术上讲,您可以将任何 JS 代码压缩到一行中,但通过简单的操作,这通常不是一个好主意,因为它牺牲了可读性,这比减少 LoC 更重要。专业、可维护的代码不是高尔夫比赛。
感谢您的回答。
我已经解决了这个问题:
myArray.forEach(el=>el%2===0?newArray.push(el):null);
我来自 Python,我正在为任何数组寻找 单行迭代器函数 ,我可以 也检查条件和return对项目的简单更改。
预期结果应符合方法:
function arrayEvenItemIncrement(myArray){
for (let i = 0; i < myArray.length; i++){
if (myArray[i]%2==0){
myArray[i]++;
}
}
return myArray;
}
我尝试使用 for (i of myArray){ }
,但这仍然不能满足我的目的。
我认为在这里做你想做的最清楚的方法是映射到一个新数组而不是改变旧数组:
const arrayEvenItemIncrement = myArray =>
myArray.map((val, i) => i % 2 === 1 ? val : val + 1);
如果您改变现有数组,它会变得更加丑陋。
const arrayEvenItemIncrement = myArray => (
myArray.forEach((val, i) => { if (i % 2 === 0) myArray[i]++; }), myArray);
或
const arrayEvenItemIncrement = myArray => {
myArray.forEach((val, i) => { if (i % 2 === 0) myArray[i]++; }); return myArray };
但我不建议这样做 - 而是将其放在多行上。
从技术上讲,您可以将任何 JS 代码压缩到一行中,但通过简单的操作,这通常不是一个好主意,因为它牺牲了可读性,这比减少 LoC 更重要。专业、可维护的代码不是高尔夫比赛。
感谢您的回答。 我已经解决了这个问题:
myArray.forEach(el=>el%2===0?newArray.push(el):null);