如何从同一数组的反向查找数组 1 的相邻元素
How to find neighbor element of array 1 from reverse of the same array
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,8
b[6]即2,想在数组a中找到2的两个邻居。 // 6,7
你可以运行数组的一个循环,然后检查它是否可以有左邻居或右邻居,如果它有它,如果它没有离开那个邻居。例如,如果循环是第一个,那么在这种情况下将没有左邻居离开 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);
}
}
}
这是fiddle:http://jsfiddle.net/r3vvba58/1/
希望对您有所帮助
如果其中一个邻居不存在,您将得到 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
不需要第二个数组并且可以舒适地读取数据:
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);
要检索左邻居,请使用:
a.retrieveNeighbour(search).left;
要检索正确的:
a.retrieveNeighbour(search).right;
如果数组中不存在该元素,则脚本returns左右都为null。
如果元素存在但 属性 不存在(如 a.retrieveNeighbour(3).left
),则脚本将 false 分配给该值。
测试:
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,8
b[6]即2,想在数组a中找到2的两个邻居。 // 6,7
你可以运行数组的一个循环,然后检查它是否可以有左邻居或右邻居,如果它有它,如果它没有离开那个邻居。例如,如果循环是第一个,那么在这种情况下将没有左邻居离开 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);
}
}
}
这是fiddle:http://jsfiddle.net/r3vvba58/1/
希望对您有所帮助
如果其中一个邻居不存在,您将得到 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
不需要第二个数组并且可以舒适地读取数据:
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);
要检索左邻居,请使用:
a.retrieveNeighbour(search).left;
要检索正确的:
a.retrieveNeighbour(search).right;
如果数组中不存在该元素,则脚本returns左右都为null。
如果元素存在但 属性 不存在(如 a.retrieveNeighbour(3).left
),则脚本将 false 分配给该值。
测试: