获取作为对象的数组元素的索引

时间:2018-09-26 05:33:24

标签: javascript jquery html

我是JavaScript的新手。在这里,我有一个像这样的数组:-

var selected_Text_Include_Array = [{ annotation_Type:'tota',value:'abc',  }]

它有多个这样的对象。现在,我要获取的是该特定元素的ID。

for (var j = 0; j <= selected_Text_Include_Array.length - 1; j++) {
          if (selected_Text_Include_Array[j].annotation_Type !== "undr") {

            var index = getIndex(selected_Text_Include_Array, annotationName);
            console.log("index is ==>", index);
            if (index !== undefined) {
              selected_Text_Include_Array.splice(index, 1);
            }
          }
        }

现在,这里是getIndex方法,

 var getIndex = function (array, annotationName) {
          if (annotationName === "Address") {
            var index = array.findIndex(function (x) {
              return x.annotation_Type === "foot";
            })
          }
          else if (annotationName === "FootNote") {
            var index = array.findIndex(function (x) {
              return x.annotation_Type === "addr";
            })
          }
          else if (annotationName === "Overview") {
            var index = array.findIndex(function (x) {
              return x.annotation_Type === "tota";
            })
          }
          else if (annotationName === "TotalExperience") {
            var index = array.findIndex(function (x) {
              return x.annotation_Type === "over";
            })
          };
        }

因此,条件得到了匹配,但仍然返回了undefined元素的id,我不知道为什么会这样。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:0)

我不太了解您要完成的工作,但是您没有从方法中返回索引值。

var getIndex = function (array, annotationName) {
    var index;
    //conditions here and set your index
    return index;
}

答案 1 :(得分:0)

我不完全了解您的代码。 从您的代码中,我了解的是“ for循环”中未定义“ annotationName”,并且您还必须在getIndex函数中将索引初始化为“ -1”,然后在每个if条件中更新索引,然后必须返回索引,那么只有您才能获得价值。 示例代码:

var getIndex = function (array, annotationName) {
    var index =-1;
    if (annotationName === "Address") {
            var index = array.findIndex(function (x) {
              return x.annotation_Type === "foot";
            })
          }
    return index;
}

答案 2 :(得分:0)

在getIndex函数中更改几件事,它将正常工作,您的代码几乎正确,只是缺少return语句

您正在将数组索引值返回到“索引变量”
,而“ function getIndex”不返回任何值

//add the following statement to at the end of getIndex function before closing "}"

return index;

所以您的getIndex函数变成这样

 var getIndex = function (array, annotationName) {
     var index;
      if (annotationName === "Address") {
        index = array.findIndex(function (x) {
          return x.annotation_Type === "foot";
        })
      }
      else if (annotationName === "FootNote") {
        index = array.findIndex(function (x) {
          return x.annotation_Type === "addr";
        })
      }
      else if (annotationName === "Overview") {
        index = array.findIndex(function (x) {
          return x.annotation_Type === "tota";
        })
      }
      else if (annotationName === "TotalExperience") {
        index = array.findIndex(function (x) {
          return x.annotation_Type === "over";
        })
      };
      return index;
    }

注意:我猜你有这样的数组

var selected_Text_Include_Array = [{annotation_Type:"over"}, {annotation_Type:'foot'}];

JSBIN示例:https://jsbin.com/qifiday/edit?html,js,console,output