有没有办法找出我的新号码去哪个位置?

时间:2018-02-07 13:19:53

标签: javascript arrays sorting push

我的array=[5,4,3,1]位于下方,我想.push(2),然后是.sort()我的array,并找出我在数组中的新号码位置刚推了我知道新号码位于array[1]的答案。

var array = [5,4,3,1];
array.push(2); //My new number
var sortedArray = arr.sort();

// sortedArray [1,2,3,4,5]
// The new number's position went to array[1]

有没有办法找出我的新号码去哪个位置?

3 个答案:

答案 0 :(得分:1)

您可以使用索引对数组进行排序,并使用存储索引来分类排序数组。



var array = [5, 4, 3, 1],
    index = array.push(2) - 1,
    indices = array
        .map((_, i) => i)
        .sort((a, b) => array[a] - array[b]);

console.log(index);                  // old index
console.log(indices.indexOf(index)); // new index
console.log(indices);




答案 1 :(得分:0)

您可以使用findIndex



const array = [5, 4, 3, 1];
const n = 32;
array.push(n);

const sortedArray = array.sort();
const index = sortedArray.findIndex(el => el === n);
console.log(sortedArray, index)




请注意,如果您使用数字并且希望它们在排序后按升序排序,则可以改进排序:

const sortedArray = array.sort((a, b) => b < a);

答案 2 :(得分:0)

您可以使用reduce功能。

  • 如果重复此方法,则此方法返回数字2的索引数组。
  • 在这种情况下,将返回只有一个索引的数组。

请查看此代码段

&#13;
&#13;
var array = [5,4,3,1];
array.push(2);

var indexes = array.sort().reduce((a, n, i) => {
  if (n === 2) {
    a.push(i);
  }
  
  return a;
}, []);

console.log(JSON.stringify(indexes));
&#13;
&#13;
&#13;

参见,返回一个只有一个索引的数组。

资源