javascript - 将项目添加到特定位置的数组

标签 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。但结果将是 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() 找到应插入元素的适当索引。

https://30secondsofcode.org/

关于javascript - 将项目添加到特定位置的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55958737/

相关文章:

javascript - 动态变量到 angularjs ng-repeat

javascript - 我如何弄平一片(森林)树木?

javascript - 如何无缝使用本地 Bower 依赖项?

javascript - 使用传单如何删除外部插件添加的旧 map 图 block ?

javascript - Jquery 电子邮件正则表达式验证

javascript - res.end() 是否结束 async.waterfall?

javascript - JS中的罗马到整数为什么它只转换第一个字符

javascript - Jquery - 点击下拉菜单

javascript - 为什么 onBeforeFirstShow 有效?

javascript - 如何找到我们点击的链接?