Javascript 检查值是否存在于两个或多个数组中

Javascript 检查值是否存在于两个或多个数组中,javascript,arrays,input,Javascript,Arrays,Input,我试图对照两个或多个数组检查用户输入值,以查看用户输入的值是否等于其中一个数组中的值。根据输入值等于哪个数组,我想显示一条特定的警报消息 到目前为止,我有: var zip=document.getElementById('zip').value; 可变区1=['11220','11223','11224','11225','11226','11228']; var zone2=['10038','10001']你需要用谷歌搜索问题并尝试形成自己的解决方案。只有当代码中存在持续错误时,才应该询

我试图对照两个或多个数组检查用户输入值,以查看用户输入的值是否等于其中一个数组中的值。根据输入值等于哪个数组,我想显示一条特定的警报消息

到目前为止,我有:

var zip=document.getElementById('zip').value;
可变区1=['11220','11223','11224','11225','11226','11228'];

var zone2=['10038','10001']你需要用谷歌搜索问题并尝试形成自己的解决方案。只有当代码中存在持续错误时,才应该询问它。这是一个免费赠品:

if(zone1.indexOf(zip)!==-1){alert("Price: $50");}
elseif(zone2.indexOf(zip)!==-1){alert("Price: $75");}

如果您希望最高效,则不应使用数组,而应使用由邮政编码键入的普通对象(或使用ES6
映射
):

var区域={
11220: 1, 11223: 1, 11224: 1, 11225: 1, 11226: 1, 11228: 1,
10038: 2, 10001: 2
};
var消息=[“未知”、“价格$50”、“价格$75”];
var zip=document.getElementById('zip');
var msg=document.getElementById('msg');
zip.oninput=function(){
msg.textContent=消息[区域[this.value]| | 0];
};
Zip:
试试这个

var zip = document.getElementById('zip').value;
var zone1 = ['11220', '11223', '11224', '11225', '11226','11228'];
var zone2 = ['10038', '10001']


if(zone1.includes(zip))
    alert("Price: $50");
else if (zone2.includes(zip))
    alert("Price: $75");
您可以简单地使用方法检查值是否作为数组元素存在

var zone1=['11220','11223','11224','11225','11226','11228'];
var zone2=['10038','10001'];
document.getElementById('zip')。addEventListener('change',(e)=>{
如果(e.target.value.length==5){
如果(检查存在(如目标值,分区1)){
log(`e.target.value}位于zone1`);
}else if(选中存在(如target.value,zone2)){
log(`e.target.value}位于zone2`);
}否则{
log(`${e.target.value}不在任何区域!`);
}
}
});
存在功能检查(针、草垛){
返回草垛。索引(针)>-1;
}
输入邮政编码,然后在文本字段外单击以验证

我最近有一个类似的任务,我就是这样解决的

调整代码以执行传递给
forEach
的函数中的任何元素所需的操作

var zone1 = ['11220', '11223', '11224', '11225', '11226','11228'],
    zone2 = ['10038', '10001'],
    zones = [[zone1, 50], [zone2, 75], ]
                .map(([zone, price]) => [new Set(zone), price]);

var userValue = '11220';

zones
    .filter(([zone, price]) => zone.has(userValue))
    .map(([zone, price]) => price)
    .forEach((price) => console.log(`Price: $${price}`))

var userValue = '10001';

zones
    .filter(([zone, price]) => zone.has(userValue))
    .map(([zone, price]) => price)
    .forEach((price) => console.log(`Price: $${price}`))

//Handle bad values, too, by defining a function
function getPrices(value){
    return zones
         .filter(([zone, price]) => zone.has(value))
         .map(([zone, price]) => price)
}
var someNonExistentValue = 'xxx';
results = getPrices(someNonExistentValue);
if (results.length){
    results.forEach(foundItem => console.log(foundItem));
} else {
    console.log('No items found!');
}
输出:

价格:$50

价格:$75

没有找到任何项目


您是否已尝试解决问题?使用
.indexOf()
在数组中查找值-非常感谢!谢谢你,马修。我感谢你的帮助!你能接受答案吗?如果答案有帮助的话,你能投赞成票吗!谢谢你好谢谢你的帮助!这是一个非常简洁的解决方案。我想在用户输入一个不在ZIP代码数组中的值时显示一些消息…我可以通过数组的indexOf搜索轻松实现这一点,但我不确定在映射数组时如何应用相同的概念。。。有什么想法吗?我在最后添加了一些代码,演示了如何处理未找到的结果。非常感谢!只有当input.length=5时,才能运行“未找到项”部件吗?由于邮政编码是5位数字,我不想在输入5个字符之前运行代码。蒂亚!您可以使用
userEntry.length
检查用户条目的长度。当
userEntry.length==5
运行你想运行的代码时,你真是太棒了!非常感谢!