js 数组的数据处理?

js 数组的数据处理

let a = 2;

arr = [3,4,5,6,7,8,9]

这个2数字不是固定的,
如果a这个值是2 我需要得到arr为
arr = [9]

如果a这个值是4 我需要得到arr为
arr = [7,8,9]

大佬们帮我看看

阅读 726
avatarAI BotBETA

为了根据变量a的值来处理数组arr,并返回满足条件的子数组,我们可以使用数组的slice方法。slice方法返回一个新的数组对象,包含从beginend(不包括end)的arrayObject的浅拷贝。

以下是基于你提供的需求的JavaScript代码:

let a = 2; // 假设a的值可以改变
let arr = [3, 4, 5, 6, 7, 8, 9];

// 计算新数组的开始索引
let startIndex = arr.length - a;

// 使用slice方法获取子数组
let newArr = arr.slice(startIndex);

console.log(newArr);

这段代码会计算出新数组的开始索引(startIndex),该索引是原始数组长度减去a的值。然后,使用slice方法从该索引开始,一直到数组末尾的元素,来创建一个新的子数组。

对于你的两个例子:

  • 如果a的值是2,startIndex将会是7 - 2 = 5slice(5)将返回[7, 8, 9],但这不是你期望的[9]。你的描述可能需要调整,因为a为2时,应该返回数组末尾的两个元素,而不是一个。
  • 如果a的值是4,startIndex将会是7 - 4 = 3slice(3)将返回[6, 7, 8, 9],这同样与你的期望[7, 8, 9]不符。

如果你的需求是始终返回数组末尾的a个元素,则应该使用Math.max来确保startIndex不会是一个负数:

let a = 2; // 假设a的值可以改变
let arr = [3, 4, 5, 6, 7, 8, 9];

// 确保startIndex不会是一个负数
let startIndex = Math.max(arr.length - a, 0);

// 使用slice方法获取子数组
let newArr = arr.slice(startIndex);

console.log(newArr);

现在,对于a为2的情况,startIndex将会是7 - 2 = 5slice(5)将返回[6, 7, 8, 9];对于a为4的情况,startIndex将会是7 - 4 = 3slice(3)将返回[6, 7, 8, 9]

请确保你的需求描述正确,并相应地调整代码。如果你的意图是始终返回数组末尾的a个元素(即使这会导致返回整个数组),则上述代码是正确的。如果你有不同的需求,请提供进一步的细节。

1 个回答

啊?除余是这样的?你是说 arr 的长度除余?

那就是这样的

const arr = [3,4,5,6,7,8,9]

function test(n) {
  return arr.slice(-(arr.length%n))
}


test(2)
// [9]

test(4)
// [7, 8, 9]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题