如何从相同数组的反向查找数组1的邻居元素

时间:2015-03-11 16:51:42

标签: javascript arrays find element neighbours

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

3 个答案:

答案 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。

试验:

enter image description here