У меня есть следующее:
var gridData = {};
var TestRow = {
"name": "xx",
"description": "xx",
"subjectId": 15
};
gridData.push(TestRow)
Как узнать номер индекса новых данных, который Я просто нажал на объект gridData?
У меня есть следующее:
var gridData = {};
var TestRow = {
"name": "xx",
"description": "xx",
"subjectId": 15
};
gridData.push(TestRow)
Как узнать номер индекса новых данных, который Я просто нажал на объект gridData?
Во-первых, я предполагаю, что gridData
- это массив, а не объект, как вы показали в своем примере кода, потому что у объекта нет метода .push()
, но массив делает.
Используйте .length - 1
в качестве индекса для последнего элемента, который вы нажали на массив, или сохраните возвращаемое значение из .push()
, которое является новой длиной массива. Это будет индекс элемента, который вы просто нажали на массив, и будет действителен до тех пор, пока вы не измените массив до этого индекса (добавление или удаление элементов перед этим индексом).
var testRowIndex = gridData.push(TestRow) - 1;
// then you can access that item like this
var item = gridData[testRowIndex];
Хотя, это не имеет большого смысла, поскольку у вас уже есть данные прямо в TestRow
. Как обычно, если вы описываете, какую проблему вы действительно пытаетесь решить, мы, возможно, можем предоставить более полезные ответы.
Когда вы нажимаете элемент в массив, вы получите текущую длину массива в качестве возвращаемого значения. Используйте его, чтобы найти индекс.
var gridData = [];
var TestRow = {
"name": "xx",
"description": "xx",
"subjectId": 15
};
var length=gridData.push(TestRow);
alert(length-1);
Array.push возвращает свойство новой длины объекта, метод был вызван.
Сначала, я скажу, что он похож на find-indexof-element-in-jquery-array
Во всяком случае, увидев @jfriend00
и @PSCoder
ответ на него блестяще, я хотел бы передать альтернативу Find Index,
Предполагая, что у вас есть массив: -
var gridData = [];//{} Curly braces will define it as object type, push operations can take place with respect to Array's
и у меня есть два или более данных в том, что Array
var TestRow = {
"name": "xx",
"description": "xx",
"subjectId": 15
};
var TestRow1 = {
"name": "xx1",
"description": "xx1",
"subjectId": 151
};
Теперь я подталкиваю эти два данных, как и вы. Чтобы найти Индекс перемещенного элемента, мы можем использовать .indexOf
и .inArray
var indexOfTestRow0 = gridData.indexOf(TestRow);// it returns the index of the element if it exists, and -1 if it doesn't.
var indexOfTestRow1 = gridData.indexOf(TestRow1);// it returns the index of the element if it exists, and -1 if it doesn't.
//Search for a specified value within an array and return its index (or -1 if not found).
var indx1 = jQuery.inArray(TestRow, gridData);
var indx2 = jQuery.inArray(TestRow1, gridData);
Мысль о тестировании материала, поэтому я попробовал что-то очень простое, как показано ниже: -
<head>
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<script>
$(document).ready(function () {
var gridData = [];//{} Curly braces will define it as Boject type, push operations can take place with respect to Array's
var TestRow = {
"name": "xx",
"description": "xx",
"subjectId": 15
};
var TestRow1 = {
"name": "xx1",
"description": "xx1",
"subjectId": 151
};
gridData.push(TestRow);
gridData.push(TestRow1);
console.log(gridData);
var indexOfTestRow0 = gridData.indexOf(TestRow);// it returns the index of the element if it exists, and -1 if it doesn't.
var indexOfTestRow1 = gridData.indexOf(TestRow1);// it returns the index of the element if it exists, and -1 if it doesn't.
//Search for a specified value within an array and return its index (or -1 if not found).
var indx1 = jQuery.inArray(TestRow, gridData);
var indx2 = jQuery.inArray(TestRow1, gridData);
console.log(indexOfTestRow0);
console.log(indexOfTestRow1);
console.log(indx1);
console.log(indx2);
});
</script>