我有一个数组
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。但结果将是 Banane、Apple、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 - 将项目添加到特定位置的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55958737/