Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中检查映射数组值是否使用不同的键重复?_Javascript_Arrays_Collections_Hashmap_Iterator - Fatal编程技术网

如何在JavaScript中检查映射数组值是否使用不同的键重复?

如何在JavaScript中检查映射数组值是否使用不同的键重复?,javascript,arrays,collections,hashmap,iterator,Javascript,Arrays,Collections,Hashmap,Iterator,我有一个以“String”作为键,“Array”作为值的映射。 现在我的问题是如何检查数组项是否存在于不同的“数组”值中?i、 e.地图中不同键的“数组” 例如: var map = { "KeyA" : [123,111,100], "KeyB" : [147,123,789] } 如何检查数组项123是否存在两个不同的键,即键A和键B 谢谢, Abhi您可以创建一个通用方法,并使用every()检查数组中的值: let map={ “KeyA”:[123111100], “KeyB”:[

我有一个以“String”作为键,“Array”作为值的映射。 现在我的问题是如何检查数组项是否存在于不同的“数组”值中?i、 e.地图中不同键的“数组”

例如:

var map = {
"KeyA" : [123,111,100],
"KeyB" : [147,123,789]
}
如何检查数组项123是否存在两个不同的键,即键A和键B

谢谢,
Abhi

您可以创建一个通用方法,并使用
every()
检查数组中的值:

let map={
“KeyA”:[123111100],
“KeyB”:[147123789],
“KeyC”:[147148789]
};
let checker=(对象、键、值)=>{
返回键。每个(k=>obj[k]。包括(val));
}

控制台日志(checker(map,[“KeyA”,“KeyB”],123))我们可以使用Object.keys()filter实现这一点,然后如果该数组中存在值,我们将返回键

我选择使用indexOf()而不是includes(),因为没有polyfil的Internet Explorer不支持它

const map = {
    "KeyA" : [123,111,100],
    "KeyB" : [147,123,789]
}

function checkForValue(array, value) {
    return Object.keys(array)
        .filter(key => (array[key].indexOf(value) !== -1) ? key : null);  
}

console.log(checkForValue(map, 123)); // [ 'KeyA', 'KeyB']

您好,Mohammad,我可以在checker方法的第二个参数中传递键数组,但我可以在第三个参数中传递值数组。表示您提到的地图的唯一值数组为[123111147148789100]。因此,如果我将这个数组作为第三个参数传递,那么我可以检查123、147或789是否存在于具有不同键的映射中,谢谢,