如何获取数组项的相反索引和值?
How do I get an Array item's opposite index and value?
我有一个使用 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
会是199
,199
会是198
,依此类推等等。
假设我想要 255
的相反值,即 0
,我可以使用 array_name[0]
得到它,但是如果我想要 200
怎么办? s 相反的值,我怎么知道 199
的相反索引是什么,这样我才能得到它的值?
使用 Maheer Ali 的建议,我设法通过反转数组并使用 indexOf
获取该数字的索引来获得所需的结果:
var numbers = Array(255).map(function(v, i) {
return i + 1;
});
var opposite_brightness = numbers.reverse()[numbers.indexOf(brightness)];
做:
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
首先,您必须了解 Array(n).map(f)
存在奇怪的行为(它不会创建您期望的数组),see this answer for explanation,其次,执行此操作以获得相反的值:
/* 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
,因为我们处理的是从 1
到 n
的值,而不是从 0
到n - 1
.
你的 Array(255).map()
创建未定义的数组 value.So 使用 Array#from
长度 object.And 传递你的 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))
首先,您提供的代码没有创建数组 [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 index 中减去 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));
我有一个使用 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
会是199
,199
会是198
,依此类推等等。
假设我想要 255
的相反值,即 0
,我可以使用 array_name[0]
得到它,但是如果我想要 200
怎么办? s 相反的值,我怎么知道 199
的相反索引是什么,这样我才能得到它的值?
使用 Maheer Ali 的建议,我设法通过反转数组并使用 indexOf
获取该数字的索引来获得所需的结果:
var numbers = Array(255).map(function(v, i) {
return i + 1;
});
var opposite_brightness = numbers.reverse()[numbers.indexOf(brightness)];
做:
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
首先,您必须了解 Array(n).map(f)
存在奇怪的行为(它不会创建您期望的数组),see this answer for explanation,其次,执行此操作以获得相反的值:
/* 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
,因为我们处理的是从 1
到 n
的值,而不是从 0
到n - 1
.
你的 Array(255).map()
创建未定义的数组 value.So 使用 Array#from
长度 object.And 传递你的 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))
首先,您提供的代码没有创建数组 [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 index 中减去 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));