gpt4 book ai didi

javascript - 将数组的任何元素与另一个数组匹配

转载 作者:行者123 更新时间:2023-11-29 19:52:45 25 4
gpt4 key购买 nike

使用下面的函数,我在一个数组中搜索一个值是否存在;

var checkboxValues = ['large-car', 'small-car', 'automatic'];
var carType = ["large-car"];

function searchArray(arguments)
{
var o = {};
for(var i=0;i<arguments.length;i++)
{
o[arguments[i]]=null;
}
return o;
}

if (carType in searchArray(checkboxValues) )
//do something...

carType(它本身是一个数组)只包含一个值但当 carType 包含多个值时,这种情况很有效,例如,

var carType = ["large-car", "4WD"];

...那么该函数将返回 false。

为了提供一些背景知识,我想做的是根据特定条件显示或隐藏 map 标记(通过 Google map ),

  • 自动
  • 手册
  • 小车
  • 大车
  • 四驱车

这些值中的每一个都表示为一个复选框。如果选择了“Automatic”和“Small Car”,则只显示包含这两个值的 map 标记。

如果选择“自动”、“小型汽车”和“大型汽车”,则仅显示与这些选择相匹配的值。

如果 carType 数组仅包含一个值,则此方法有效,但由于单个车辆可能有多个类型,如上所示,这就是函数失败的地方。

编写允许将一个数组中的多个值与另一个数组中的多个值进行比较的函数的最佳方法是什么?

最佳答案

摘自 this answer 的片段.

function arrayUnique(array) {
var a = array.concat();
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i] === a[j])
a.splice(j--, 1);
}
}
return a;
};

然后像这样使用它:

var checkboxValues = ['large-car', 'small-car', 'automatic'],
carType = ["large-car"],
merged = arrayUnique(checkboxValues.concat(carType));
if (merged.length === checkboxValues.length) {...}

如果你需要返回两个数组的匹配元素你可以这样做:

function matchArrays(base, toSearch) {
var returnArray = [];
for (var i = 0; i < toSearch.length; i++) {
if (base.indexOf(toSearch[i]) !== -1) returnArray.push(toSearch[i]);
}
return returnArray;
}

用法:

var match = matchArrays(checkboxValues, carType); // return "large-car"

关于javascript - 将数组的任何元素与另一个数组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17146029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com