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