当对象中有两个键具有特定值时,如何看到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==1
和value2==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);
}