在js中查找数组中对象的索引符合数组中的值

时间:2016-03-04 21:24:35

标签: javascript jquery

我的数组像callsData [],其中包含如下对象:

{
  "caller_id": "110",
  "Channel": "SIP/Kam-SBC-0000001c",
  "AccountCode": "1004",
  "Server": "192.168.1.36",
  "Callee": "109",
  "connected_line": "109",
  "Uniqueid": "145712272845",
  "DestChannel": "SIP/Kam-SBC-0000001d",
  "DestUniqueid": ["3432423423423","123123123","312321312"]
}

我想找到对象的索引,其中我的值3432423423423存在于DestUniqueid数组中。

5 个答案:

答案 0 :(得分:1)

尝试编写一个简单的for loop

for(var i=0;i<callsData.length;i++){
  if(callsData[i].DestUniqueid.indexOf("3432423423423") > -1)
  break;
}

console.log(i + " is the index of element with value 3432423423423");

如果你想把它作为一个函数,那就写一下,

function getIndex(val){
 for(var i=0;i<callsData.length;i++){
  if(callsData[i].DestUniqueid.indexOf(val) > -1)
   break;
 }
 return i;
}

console.log(getIndex("3432423423423") + " is the index of element with value 3432423423423");

DEMO

答案 1 :(得分:0)

循环遍历主数组,并在每次迭代时,检查DestUniqueid属性以查看它是否包含您寻找的值:

function findIndex(valToFind){
 for(var i = 0; i < callsData.length; ++i){
   if(callsData[i].DestUniqueid.indexOf(valToFind) >= 0) {
       return i;
   }
 }
}

答案 2 :(得分:0)

这是一个在线性时间内完成此功能的简单功能。

阵列有多大?它以任何方式排序吗?

function findIndex (array, target) {
 for (var i = 0; i < array.length; i++){
   if (array[i].DestUniqueid) === target){
     return i;
   }
   return null;
 }
}

答案 3 :(得分:0)

使用Array#find功能:

var index;

callsData.find(function(el, i) {
    if (el.DestUniqueid.indexOf('3432423423423') != -1) {
        index = i;
        return true;
    }
})

console.log(index); // index that you need

您还可以使用Array#filter函数获取所需的DestUniqueid所有元素:

var arr = callsData.filter(function(el){
     return el.DestUniqueid.indexOf('3432423423423') != -1;
});

console.log(arr); // array of callsData with your DestUniqueid

答案 4 :(得分:0)

var x = {
  "caller_id": "110",
  "Channel": "SIP/Kam-SBC-0000001c",
  "AccountCode": "1004",
  "Server": "192.168.1.36",
  "Callee": "109",
  "connected_line": "109",
  "Uniqueid": "145712272845",
  "DestChannel": "SIP/Kam-SBC-0000001d",
  "DestUniqueid": ["3432423423423","123123123","312321312"]
}

x.DestUniqueid.indexOf("3432423423423")
> 0
x.DestUniqueid.indexOf("312321312")
> 2

所以你可以在函数中调用index of

var findIndex = function(obj, myVar){
   return obj.DestUniqueid.indexOf(myVar)
}

并称之为:

findIndex(x, "312321312")
>2