indexOf取决于两个键

时间:2017-11-23 11:49:27

标签: javascript object

当对象中有两个键具有特定值时,如何看到indexOf?

let myObj = {
"value1":[1,2,3],
"value2":[2,3,4]};

我想得到myObj.value1==1 && myObj.value2==2时的索引。我似乎找不到办法。

编辑:好吧可能有:

if (myObj.value1.indexOf(1) == myObj.value2.indexOf(2)) {
commonIndex = myObj.value1.indexOf(2);}

但是有更优雅的方式吗?

另外,我怎样才能管理值多次出现的情况?

喜欢这里:

let myObj = {
"value1":[1,1,1,2,3,4,5],
"value2":[2,3,4,5,6,7,8]}

我希望案例中value1==1value2==3

3 个答案:

答案 0 :(得分:2)

你可以用它。它更有效率。由于indexOf需要O(n)时间,所以使用它一次比两次好。

var ind = myObj.value1.indexOf(1);
if ( myObj.value2[ind] === 2) {
    commonIndex = ind;
}

编辑我看到你编辑了这个问题,数组可能会有多个这些元素的出现。这是我的解决方案:

myObj.value1.forEach(function(val, ind){
    if(val ===1 & myObj.value2[ind] === 2){
        commonIndex = ind;
    }
})

答案 1 :(得分:0)

如果这样做不好你可以做到:

if (myObj.value1.includes(1) === myObj.value2.includes(2)) {
commonIndex = myObj.value1.indexOf(2);}

答案 2 :(得分:0)

你可以使用下面的代码从对象的值中获取密钥



function getKeyByValue(object, value) {
  return Object.keys(object).find(key => object[key] === value);
}