【发布时间】:2016-12-05 09:35:00
【问题描述】:
我有一个按钮,它有一个名为 clickNext() 的函数。每当单击该按钮时,它都会增加名为“arr1”的数组上的索引位置(scope.selected)。
<button type="button" class="right-btn col-xs-6" role="menuitem" ng-click="clickNext()">Next</button>
.
function clickNext()
{
scope.selected = (scope.selected + 1) % length;
}
arr1 = [
{apple: 1 , tango},
{banana: 3, kappa},
{orange:5, alpha},
{apple: 8 , beta},
{grape: 10 , sigma}
]
问题
我有一个与 arr1 相同的数组,称为“arr2”。我想要做的是让 clickNext() 基于 arr2 数组 而不是 arr1 数组递增到下一个索引位置。
现在,clickNext 函数仍然按照 arr1 数组的顺序递增。例如,如果我要单击按钮,它将从橙色:5 开始,然后移动到苹果 8,等等。
arr2 = [
{orange:5, alpha},
{apple: 8 , beta},
{banana: 3, kappa},
{grape: 10 , sigma},
{apple: 1 , tango}
]
我的尝试 我完成此操作的过程是使用 findIndex() 函数并将 arr2 项目与 arr1 项目匹配。这不起作用,但也许我的结构有误?
clickNext(){
var oldIndex = filteredToXs(scope.selected);
scope.selected = oldIndex + 1;}
function filteredToXs( filteredIndex ) {
var firstArr = scope.arr1[ filteredIndex ];
var xsIndex = scope.arr2.findIndex( function(item) {
return item.trackingNumber === firstArr.trackingNumber;
} );
if( xsIndex >= 0 ) return xsIndex;
if( xsIndex === -1 ) return 0; // Default value
}
【问题讨论】:
-
我不明白你为什么不直接使用第二个数组。尝试在它们之间进行交叉引用有什么好处?
-
为了简单起见,在示例中。它在代码中被映射出来,但是为了引用目的,数组必须是分开的。
标签: javascript arrays sorting indexing