Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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 - Fatal编程技术网

Javascript 查找数组是否具有与新数组中的另一个元素相对应的子字符串

Javascript 查找数组是否具有与新数组中的另一个元素相对应的子字符串,javascript,Javascript,我从承诺中获取“name”的值,并将其存储在数组中,因为它可能包含多个名称 var name = ["Arun_Manohar"]; var combinations = ["abc", "def", "ghi", "har", "lmn"]; 假设我有一个活动对象 var activities = { driving: false, jogging: false, drinking: false } 在这种情况下,如何编写一个检查来更新activities对象。 注

我从承诺中获取“name”的值,并将其存储在数组中,因为它可能包含多个名称

var name = ["Arun_Manohar"];
var combinations = ["abc", "def", "ghi", "har", "lmn"];
假设我有一个活动对象

var activities = {
    driving: false,
    jogging: false,
    drinking: false
}
在这种情况下,如何编写一个检查来更新activities对象。 注意:组合数组中没有两个元素是名称数组的子字符串。就一个

案例:因为name包含组合元素之一的子字符串,所以我需要更新activities对象。如果名称包含像“abc”这样的子字符串,我将用不同的值更新对象

使用lodash会很好

尝试了某些操作,但无法更新对象

if(name.indexOf(_.filter(combinations, function(e) { return.indexOf("har") !== -1})) !== -1) {
    activities.driving= true;
    activities.jogging= true;
}
如果名称包含“abcpoc”,因为子字符串存在于组合数组中,我会用一组不同的值更新对象。

var names=[“Arun_Manohar”];
var names = ["Arun_Manohar"];
var combos = ["abc", "def", "ghi", "har", "lmn"];
var activities = {};

for (var i = 0; i < names.length; i++) {
   for (var j = 0; j < combos.length; j++) {
      if (names[i].indexOf(combos[j]) >= 0) {
          activities.driving = true; //or whatever you need here;
      }
   }
}
var组合=[“abc”、“def”、“ghi”、“har”、“lmn”]; var活动={}; 对于(var i=0;i=0){ activities.driving=true;//或您在此处需要的任何内容; } } }
Yo还可以通过附加检查和continue/break语句扩展此代码,以避免在已找到相应子字符串时出现附加的不必要循环。

var name=[“Arun_Manohar”];
var组合=[“abc”、“def”、“ghi”、“har”、“lmn”];
var活动={};
对于(var i=0;i=0){
activities.driving=true;//或您在此处需要的任何内容;
}
}
}

Yo还可以使用附加检查和continue/break语句扩展此代码,以避免在已找到相应子字符串时出现附加的不必要循环。

如果使用lodash,则可以使用
.intersectionWith
,使用使用
indexOf()
的比较器函数

然后,您可以通过
匹配的\u组合
活动
添加适当的内容:

matched_combos.forEach(str => {
    switch(str) {
        "har":
            activities.driving = true;
            activities.jogging = true;
            break;
        ...
    }
});

如果您使用的是lodash,则可以使用
.intersectionWith
,使用使用
indexOf()
的比较器函数

然后,您可以通过
匹配的\u组合
活动
添加适当的内容:

matched_combos.forEach(str => {
    switch(str) {
        "har":
            activities.driving = true;
            activities.jogging = true;
            break;
        ...
    }
});

以下是带有
索引of
的ES5解决方案:

var name=[“Arun_Manohar”];
var组合=[“abc”、“def”、“ghi”、“har”、“lmn”];
风险值活动={
驾驶:错,
慢跑:错,
饮酒:错
}
对于(var i=0;i=0){
activities.name=名称[i]
}
}
}

控制台日志(活动)这是带有
indexOf
的ES5解决方案:

var name=[“Arun_Manohar”];
var组合=[“abc”、“def”、“ghi”、“har”、“lmn”];
风险值活动={
驾驶:错,
慢跑:错,
饮酒:错
}
对于(var i=0;i=0){
activities.name=名称[i]
}
}
}


控制台日志(活动)我不明白,activities对象与这两个数组有什么关系?它与此无关。我只是想知道它是如何工作的。你说你想更新活动对象。使用what?循环两个数组,使用
indexOf()
测试是否找到子字符串。如果是,更新
activities
@Barmar如果它是一个与“Arun_manohar”匹配的子字符串,比如“har”,那么我会将driving和jogging的值更新为true我不明白,activities对象与这两个数组有什么关系?它与此无关。我只是想知道它是如何工作的。你说你想更新活动对象。使用what?循环两个数组,使用
indexOf()
测试是否找到子字符串。如果是,更新
activities
@Barmar如果是与“Arun_manohar”类似的“har”匹配的子字符串,那么我将驾驶和慢跑的值更新为trueHey Artem,有没有办法在检查组合数组中给出元素的值?因为“har”存在,所以我更新对象。如果名称数组是[“abcpoc”],并且由于存在“abc”,我想用一组不同的值来更新对象。你指的是哪一个元素?数组中项目的意义上的元素。@a2441918如果你在寻找像
“har”
这样的特定字符串,为什么需要
组合
数组?实际上是
名称[I]
是名称数组中的和元素,
组合[j]
是组合数组中的元素。你可以用这些值做任何你需要的检查。嘿,阿尔特姆,有没有一种方法我可以给检查的组合数组中元素的值?因为“har”存在,所以我更新对象。如果名称数组是[“abcpoc”],并且由于存在“abc”,我想用一组不同的值来更新对象。你指的是哪一个元素?数组中项目的意义上的元素。@a2441918如果你在寻找像
“har”
这样的特定字符串,为什么需要
组合
数组?实际上是
名称[I]
是名称数组中的和元素,
组合[j]
是组合数组中的元素。您可以使用这些值执行任何需要的检查。