如何找出推入数组的对象的索引号?

29 javascript

我有以下内容:

var gridData = {};
var TestRow = {
   "name": "xx",
   "description": "xx",
   "subjectId": 15
                };
gridData.push(TestRow)
Run Code Online (Sandbox Code Playgroud)

如何找出刚刚推入gridData对象的新数据的索引号?

jfr*_*d00 57

首先,我假设它gridData是一个数组,而不是你在示例代码中显示的对象,因为一个对象没有.push()方法,但是数组有.

使用.length - 1作为索引给你推到阵列的最后一个项目或保存返回的值从.push()哪个是数组的新长度.这将是您刚刚推送到数组的元素的索引,并且在您在该索引之前修改数组(在该索引之前添加或删除项目)之前,该元素的索引才有效.

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

但是,由于您已经拥有正确的数据,因此这并没有多大意义TestRow.像往常一样,如果你描述了你真正试图解决的问题,我们可能会提供更多有用的答案.

  • @PaulHaggo - 如果你将一个值推到数组上,那么`length - 1`总是你刚推到数组上的那个项的索引.如果你有其他操作数组的代码,那么所有的赌注都是关闭的 - 前一项的索引是未知的,并且不会被知道,因为它取决于其他代码对数组的作用.问题是要求"刚推"的项目的索引.这回答了这个问题. (4认同)
  • @PaulHaggo - 好的,有效点.我添加了一些更多的verbage来清楚地说明只要你不在该索引之前插入/删除元素,这个索引就是好的. (3认同)
  • 我知道你的意思,但只要在索引之前没有从数组中删除任何项目,你得到的索引才有效.我可以立即使用您的方法获取索引,但如果我稍后尝试使用该值,则可能不会引用我认为它的元素.你的答案仍然是正确的,但我不认为这对那些不了解阵列的人来说是有帮助的. (2认同)

PSL*_*PSL 7

当您将项目推入数组时,您将获得数组的当前长度作为返回值。使用它来查找索引。

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

Array.push 返回调用该方法的对象的新长度属性。