Подтвердить что ты не робот

Как узнать номер индекса объекта, который я ввел в массив?

У меня есть следующее:

var gridData = {};
var TestRow = {
   "name": "xx",
   "description": "xx",
   "subjectId": 15
                };
gridData.push(TestRow)

Как узнать номер индекса новых данных, который Я просто нажал на объект gridData?

4b9b3361

Ответ 1

Во-первых, я предполагаю, что gridData - это массив, а не объект, как вы показали в своем примере кода, потому что у объекта нет метода .push(), но массив делает.

Используйте .length - 1 в качестве индекса для последнего элемента, который вы нажали на массив, или сохраните возвращаемое значение из .push(), которое является новой длиной массива. Это будет индекс элемента, который вы просто нажали на массив, и будет действителен до тех пор, пока вы не измените массив до этого индекса (добавление или удаление элементов перед этим индексом).

var testRowIndex = gridData.push(TestRow) - 1;
// then you can access that item like this 
var item = gridData[testRowIndex];

Хотя, это не имеет большого смысла, поскольку у вас уже есть данные прямо в TestRow. Как обычно, если вы описываете, какую проблему вы действительно пытаетесь решить, мы, возможно, можем предоставить более полезные ответы.

Ответ 2

Когда вы нажимаете элемент в массив, вы получите текущую длину массива в качестве возвращаемого значения. Используйте его, чтобы найти индекс.

var gridData = [];
var TestRow = {
   "name": "xx",
   "description": "xx",
   "subjectId": 15
                };
var length=gridData.push(TestRow);
alert(length-1);

Array.push возвращает свойство новой длины объекта, метод был вызван.

Ответ 3

Сначала, я скажу, что он похож на 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>