繁体   English   中英

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

[英]How do I get an Array item's opposite index and value?

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

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的相反索引是什么,所以我可以得到它的价值?

做:

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

随着reverse按@Maheer阿里建议:

a.reverse()[index]
7

首先,你得明白,有关于怪异的行为Array(n).map(f)它不会产生你期待的阵列), 看到这个答案的解释 ,第二,这样做是为了得到相对的价值:

 /* 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从,而不是0n - 1

您的Array(255).map()创建未定义的数组值,因此Array#from length对象中使用Array#from传递您的value。获取该值的索引并与反向数组匹配,您将获得相反的值

 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)) 

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

 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)); 

从数组的(length-1) -> max inde x减去索引

 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)); 

使用Maheer Ali的建议,我设法通过反转数组并使用indexOf获取该数字的索引来获得所需的结果:

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

var opposite_brightness = numbers.reverse()[numbers.indexOf(brightness)];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM