javascript - 将项目添加到特定位置的数组
问题描述
我有一个数组
var arr = [];
并希望在数组的开头或结尾添加项目。我在 MouseDown 事件中添加项目并检查 Y 值是更低还是更高。较低的值 (Y) 应添加到开头,较高的值 (Y) 应添加到末尾。
到目前为止,这可以像这样使用 Push() 和 Unshift() 解决。第一个值位于 10(Y),第二个值位于 30(Y)。
arr.push(y);
if (arr[arr.length-1] < arr[arr.length-2]) {
arr.unshift("Apple");
} else if (arr[arr.length-1] > arr[arr.length-2]) {
arr.push("Orange");
}
我现在的问题是中间有一个值。例如,当我有这个时:
First value is 10(Y)
Second value is 30(Y)
Third value is 20(Y)
结果应该是 Apple、Banana、Orange。但结果会是香蕉、苹果、橙子。
解决方案
你可以使用这样的东西:
const sortedIndex = (arr, n) => {
const isDescending = arr[0] > arr[arr.length - 1];
const index = arr.findIndex(el => (isDescending ? n >= el : n <= el));
return index === -1 ? arr.length : index;
};
sortedIndex(arr, 20); // 1
sortedIndex([10, 30], 20); // 1
它会找到您要将新值插入到哪个索引。
返回应将值插入数组以保持其排序顺序的最低索引。
检查数组是否按降序(松散)排序。使用 Array.prototype.findIndex() 找到应该插入元素的适当索引。
推荐阅读
- javascript - Discord.js - 你如何记录用户名、鉴别器和头像更改?
- python - fasttext 安装过程中出错。怎么修?
- aws-lambda - aws lambda get-account-settings 返回“str”对象没有属性“get”
- php - 使用mysql更新关系表中的一行
- javascript - 选择画廊
- php - 在轮播滑块中添加图像
- c# - 在列表视图中建模和显示来自多个表的列
- google-sheets - 检查 Google 表格页面是否存在单元格中的重复内容
- javascript - 你如何在 Django 中运行 Javascript?
- flutter - 使用提供程序为所有文本字段重置 TextfieldController