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

时间:2019-05-02 19:06:24

标签: 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。

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

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/