function compareNumbers(x, y) {
return x - y;
}
var a = [3,6,2,7,8,10,43] //I have one array
var b = a.slice().sort(compareNumbers).reverse(); //I reverse this array
//现在我有2个数组
a = [3,6,2,7,8,10,43]
b = [43, 10, 8, 7, 6, 3, 2]
我的问题:我想在数组a中找到b的邻居元素。 例如:
b [0]即43,想在阵列a中找到43的两个邻居。 // 10
b [1]即10,想要在数组a中找到10的邻居。 // 43,4
b [6]即2,想要在数组a中找到2的两个邻居。 // 6,7
答案 0 :(得分:2)
如果其中一个邻居不存在,您将获得null
。
var searchvalue = b[0]
var index = a.indexOf(searchvalue)
var firstNeighbour = index > 0 ? a[index-1] : null
var secondNeighbour = index < (a.length - 1) ? a[index + 1] : null
答案 1 :(得分:0)
你可以运行一个数组的循环,然后检查它是否可以有左或右邻居,如果它已经得到它,如果它没有离开那个neigbour。例如,如果循环是第一个,那么在这种情况下将没有左邻居离开left_neigbour,如果循环是最后一个,那么在这种情况下将没有正确的邻居留下正确的邻居并获得left_neighbour.Just使用下面代码
a = [3,6,2,7,8,10,43];
b = [43, 10, 8, 7, 6, 3, 2];
for (i = 0; i < b.length; i++) {
if (i == 0) {
var left_neighbour = '';
} else {
var left_neighbour = a[i - 1];
}
if (i == b.length) {
var right_neighbour = '';
} else {
var right_neighbour = a[i + 1];
}
if (left_neighbour !== '') {
if (right_neighbour) {
console.log(left_neighbour + "," + right_neighbour);
} else {
console.log(left_neighbour);
}
} else {
if (right_neighbour) {
console.log(right_neighbour);
} else {
console.log(left_neighbour);
}
}
}
这是小提琴:http://jsfiddle.net/r3vvba58/1/
希望这有助于你
答案 2 :(得分:0)
无需第二个数组并且可以获得舒适的数据:
http://jsfiddle.net/7pz13Lg2/1/
var a = [3,6,2,7,8,10,43];
a.retrieveNeighbour = function (needle) {
if (this.indexOf(needle) == -1) {
return {
right: null,
left: null
};
}
else {
return {
left: (this[this.indexOf(needle)-1] != undefined) && this[this.indexOf(needle)-1],
right: (this[this.indexOf(needle)+1] != undefined) && this[this.indexOf(needle)+1]
}
}
};
console.log(a.retrieveNeighbour(3).right);
console.log(a.retrieveNeighbour(6).left);
console.log(a.retrieveNeighbour(93).right);
要检索LEFT邻居,请使用:
a.retrieveNeighbour(search).left;
要检索正确的:
a.retrieveNeighbour(search).right;
如果数组中不存在该元素,则该脚本将向左和向右返回null。
如果元素存在但属性不存在(如a.retrieveNeighbour(3).left
),则脚本会为该值赋值false。
试验: