我有一个对象的索引:
indexArray = [
{obj 1},
{obj 2},
...
{obj n}
];
我对它应用了排序算法,而indexArray最终被混淆了:
indexArray = [
{obj 77},
{obj 36},
...
{obj 8}
];
如果原始数组中有一个元素,其索引前后我想跟踪。例如,obj 36在排序之前处于索引[35],而新索引是索引[1]。我如何确定新索引。
我可以在排序之前保持temp变量中的元素/ obj36,然后在排序之后,询问indexArray obj36的当前索引吗?如果是这样,怎么样?
答案 0 :(得分:1)
是的,使用temp变量来引用它然后在排序数组中查找它可以成功。您可以使用Array.prototype.indexOf
方法(如果可用)或只是循环查找它。
答案 1 :(得分:0)
你可以这样做:
看看:
// original array of objects
var a = [{
n: 5
}, {
n: 3
}, {
n: 7
}, {
n: 1
}];
// create a copy of the original (concats the original with a empty one)
var b = a.concat([]);
// sorting
a.sort( function( left, right ) {
return left.n - right.n;
});
// print a values
for ( var i in a ) {
console.log( a[i].n );
}
// print b values
for ( var i in b ) {
console.log( b[i].n );
}
// searching...
for ( var i in a ) {
console.log( "value: " + a[i].n +
" original index: " + b.indexOf(a[i]) +
" current index: " + i );
}
查看有关数组函数的一些信息,请查看here。