Javascript 取决于两个键的indexOf

Javascript 取决于两个键的indexOf,javascript,object,Javascript,Object,在一个对象中,当两个键具有某个值时,如何查看索引 let myObj = { "value1":[1,2,3], "value2":[2,3,4]}; 例如,我想获取whenmyObj.value1==1&&myObj.value2==2的索引。我似乎找不到做这件事的方法 编辑:可能有: if (myObj.value1.indexOf(1) == myObj.value2.indexOf(2)) { commonIndex = myObj.value1.indexOf(2);} 但还有更优

在一个对象中,当两个键具有某个值时,如何查看索引

let myObj = {
"value1":[1,2,3],
"value2":[2,3,4]};
例如,我想获取when
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==1
value2==3
,如果不好,你可以:

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

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

函数getKeyByValue(对象,值){ 返回Object.keys(Object.find)(key=>Object[key]==value);
}您可以使用这个。效率更高。由于
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;
    }
})

你能解释清楚匹配条件吗。你想比较哪两件事?我真的不想比较任何东西。我有一个对象,我想知道对象中的两个属性将在哪里获得特定值。很好,谢谢:)可能有一些更复杂的情况,你能看到我的编辑吗?在这种情况下,你必须迭代两个数组
indexOf
只返回该元素第一次出现的索引。非常感谢。我正在编辑我的答案,以满足您的第二个要求,这样答案看起来就完整了。