如何获取数组项的相反索引和值?

时间:2019-03-16 14:49:30

标签: javascript arrays indexing range indexof

我有一个使用Array(...)Array.prototype.map创建的数组,如下所示:

var array_name = Array(255).map(function(undef, i) {
  return i + 1;
});

此数组的值为:

[1, 2, 3, ..., 253, 254, 255]

这是一个不会被修改的数组,因此该数组的第一个值将始终为1,而该数组的最后一个值将始终为255

我已经知道每个值的索引是{value} - 1,所以200将是199199将是198,依此类推,依此类推

假设我想要255的相反值,即0,我可以使用array_name[0]来得到,但是如果我想要200的相反值值,我怎么知道199的相反索引是什么,我才能得到它的值?

6 个答案:

答案 0 :(得分:1)

要做:

opposite_index = arr.length - index - 1

例如:

a = [1,2,3,4,5,6,7,8,9,10]

index = 3
a[index]
4

相反是7,所以:

opposite_index = a.length - index - 1
a[opposite_index]
7

根据@Maheer Ali的建议,使用reverse

a.reverse()[index]
7

答案 1 :(得分:1)

首先,您要了解关于Array(n).map(f)的行为很奇怪(它不会创建您期望的数组),see this answer for explanation,其次,这样做是为了获得相反的值:< / p>

/* fill it first with .fill(), see the question I linked for more explanation */
var array = Array(255).fill(undefined).map(function(undef, i) {
  return i + 1;
});

function opposite(array, n) {
  return array[array.length - n];
}

console.log(opposite(array, 255));
console.log(opposite(array, 200));
console.log(opposite(array, 199));
console.log(opposite(array, 1));

请注意,使用的是length - n而不是length - n - 1,因为我们处理的是从1n的值,而不是从0到{{ 1}}。

答案 2 :(得分:1)

您的Array(255).map()创建未定义的数组值。使用Array#from长度对象。并传递您的value.get值的索引并与反向数组匹配,您将得到相反的值

let check = (val) => {
var array_name = Array.from({length:255},(a,b)=>b+1);
var nor_ind = array_name.indexOf(val);
var re_in = array_name.reverse(array_name).indexOf(val)
return ({nor_val:val,nor_ind:nor_ind,opp_val:re_in})
}

console.log(check(254))

答案 3 :(得分:1)

首先,您提供的代码不会创建数组[1,2,3...255]。它将创建它将首先需要fill()的255个空项目。

var arr = Array(255).fill().map((a,i) => i+1);


//Create an array which will have revese items.
let revarr= arr.reverse()
console.log(revarr[0]) //255
console.log(revarr[254]) // 1

如果您不想创建反向arr。您可以创建一个function

var arr = Array(255).fill().map((a,i) => i+1);
const opp = (arr,num) => arr[arr.length - num - 1];
console.log(opp(arr,0));
console.log(opp(arr,254));

答案 4 :(得分:1)

(length-1)-> max inde x数组中减去 index

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function findOpp(index, length) {
  maxIndex = length - 1;
  if (index <= maxIndex && index >= 0) {
    return maxIndex - index;
  } else {
    
    return 'You have enter a wrong index';
  }
}

console.log(findOpp(-1, 10));
console.log(findOpp(0, 10));
console.log(findOpp(1, 10));
console.log(findOpp(2, 10));
console.log(findOpp(4, 10));
console.log(findOpp(5, 10));
console.log(findOpp(6, 10));
console.log(findOpp(7, 10));
console.log(findOpp(8, 10));
console.log(findOpp(9, 10));
console.log(findOpp(10, 10));

答案 5 :(得分:0)

使用Maheer Ali的建议,我通过反转数组并使用.left img{ /* width:100%; remove this line from your rule*/ max-width: calc(100% - 10px); } 来获取该数字的索引,从而获得了所需的结果:

indexOf