从多维数组中获取索引
Get index from multidimensional array
我有一个这样的多维数组:
var squares = new Array();
for(var i = 0; i <= 8; i++)
{
squares[i] = new Array();
for(var j = (i * 20) + 1; j <= 20 * i + 20; j++)
{
if (squares[i] == null)
{
squares[i] = ''+j;
}
else
{
squares[i].push('' + j);
}
}
}
当我点击一个正方形时,我想从多维数组中获得索引:
angular.element('.click').click(function() {
var squareId = angular.element(this).attr('id'); //Rutans id
for(var k = 0; k <= 8; k++)
{
var squareIndex = squares[k].indexOf(squareId);
}
console.log(squareIndex);
但这只会导致console.log的-1。有谁能帮我吗?
使用indexOf()只检查ID是否存在于该数组中。因此,如果它出现在第一个数组中,它将继续在它们上循环,返回-1覆盖上一个值。
您需要做的是在找到循环时停止它,并返回k,即当前正在迭代的数组的索引。
这是一把小提琴,希望能帮上忙Fiddle
var squares = new Array();
for(var i = 0; i <= 8; i++)
{
squares[i] = new Array();
for(var j = (i * 20) + 1; j <= 20 * i + 20; j++)
{
if (squares[i] == null)
{
squares[i] = ''+j;
}
else
{
squares[i].push('' + j);
}
}
}
console.log(squares);
$('a').on('click', function(){
var squareId = $(this).attr('id');
var squareIndex = 0,
numberIndex = 0;
for(var k = 0; k < squares.length; k++)
{
squareIndex = squares[k].indexOf(squareId);
if (squareIndex > -1) {
numberIndex = squareIndex;
squareIndex = k;
break
}
}
alert('NumberIndex: '+ numberIndex+' ParentSquareIndex: '+ squareIndex);
});
请参阅此处http://plnkr.co/edit/aldjCQRchgESR7IWn367?p=preview我希望这会有所帮助。
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.2.x" src="https://code.angularjs.org/1.2.22/angular.js" data-semver="1.2.22"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<p>Hello !</p>
<table>
<tr ng-repeat="lines in squares track by $index ">
<td ng-repeat="nr in lines track by $index" ng-click="getMyId(nr)">{{nr}}</td>
</tr>
</table>
</body>
</html>
JS:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
var squares = [];
for(var i = 0; i <= 8; i++)
{
squares[i] = [];
for(var j = (i * 20) + 1; j <= 20 * i + 20; j++)
{
if (squares[i] === null)
{
squares[i] = ''+j;
}
else
{
squares[i].push('' + j);
}
}
}
$scope.squares = squares;
$scope.getMyId = function(id){
alert(id);
}
console.log(squares);
});
相关文章:
- 对于关于es6-获取索引如何
- AngularJS ng选项获取索引
- Javascript点击即可获取索引
- 按值获取索引
- 在Chrome上获取z索引值时存在差异
- 循环对象以获取索引值
- 快速从 2D 数组获取索引,无需迭代 jquery
- 无法从循环数据属性的内容中获取索引的值
- 在 JavaScript 数组中按值获取索引
- 获取索引处字符的 ANSI 颜色
- 我知道如何获取 z 索引,但是有没有办法在页面上获取绝对 Z(数字,而不是 AUTO)
- 使用自定义Knockout映射时获取索引值
- 如何在不计算隐藏元素的情况下获取索引
- 正在从对象获取索引
- 如何从父元素获取索引值
- 从多维数组中获取索引
- 如何检测当前输入文本'使用jquery从输入文本数组中获取s索引
- 如何获取索引元素
- 在javascript的多维数组中获取索引
- 在javascript foreach循环中获取索引