我有一些数组,如果它们包含类似的值,我想返回这些数组的名称。
var x = { "food": ['bacon', 'cheese', 'bread', 'tomato'], "utilities": ['plates', 'forks', 'spatulas'], "guests": ['john', 'matt', 'bill'] }, y = ['bacon', 'tomato', 'forks'];
我有我的变量x
,它有多个数组,名字要么是食物
,要么是实用工具
,要么是客人
。y
包含的只是变量x
中某些数组中相同的值。我需要返回数组中包含bacon
、tomato
和forks
的数组的名称。因此,对于这个示例,我需要返回:[“食品”、“实用工具”]
。
function getContainerName(obj, values) { return Object.keys(obj).find(function(key) { return values.every(value => obj[key].find(function(elem) { return elem === value; })); }); } console.log(getContainerName(x, y));
通过这个函数抛出它们时,我得到一个错误*********
。如何获取返回的[“食品”、“实用工具”]
数组?
你可以用电脑来做。filter()和。带有对象的一些()方法。键()
:
function getContainerName(obj, values) {
return Object.keys(obj).filter(function(key) {
return y.some(function(v){
return obj[key].indexOf(v) !== -1;
})
});
}
演示:
var x = {
"food": ['bacon', 'cheese', 'bread', 'tomato'],
"utilities": ['plates', 'forks', 'spatulas'],
"guests": ['john', 'matt', 'bill']
},
y = ['bacon', 'tomato', 'forks'];
function getContainerName(obj, values) {
return Object.keys(obj).filter(function(key) {
return y.some(function(v){
return obj[key].indexOf(v) !== -1;
})
});
}
console.log(getContainerName(x, y));
您可以使用y
数组和数组#some的映射来排列#过滤对象#键数组。
var x = {
"food": ['bacon', 'cheese', 'bread', 'tomato'],
"utilities": ['plates', 'forks', 'spatulas'],
"guests": ['john', 'matt', 'bill']
};
var y = ['bacon', 'tomato', 'forks'];
var yMap = y.reduce(function(o, v) { // create a map to save iteration of y on each comparsion
o[v] = true;
return o;
}, {});
var result = Object.keys(x).filter(function(key) { // filter the keys
return x[key].some(function(v) { // keep the key, if at least one item of the array is in the map
return yMap[v];
});
});
console.log(result);
在对象上创建一个简单的
就可以了reduce()
。按键
var x = {
"food": ['bacon', 'cheese', 'bread', 'tomato'],
"utilities": ['plates', 'forks', 'spatulas'],
"guests": ['john', 'matt', 'bill']
},
y = ['bacon', 'tomato', 'forks'];
let res = Object.keys(x).reduce((a, b) => {
if (x[b].some(v => y.includes(v))) a.push(b);
return a;
}, []);
console.log(res);
该示例摘自Elasticsearch参考:https://www.elastic.co/guide/en/Elasticsearch/reference/5.3/nested.html 我的索引和这个差不多。唯一的区别是user.first和user.last是关键字类型,所以我可以对它们使用过滤器。 在两种情况下,我应该使用什么查询来获取与上面数组匹配的文档(正好是两个项,一个项是John Sm
我正在处理数据帧,需要提取数据。我有许多嵌套的级别,所以我使用分解和选择来创建第一个级别,但随后我对嵌套级别使用UDF。 我有一个UDF,它取Root.Obj,这是一个数组,我希望它返回一个数组[MyObj] 我的输出类: 简而言之,这是输入模式: 我的自定义项: 这是更复杂的IRL,因为我需要从其他地方检索值,并且有更多的嵌套数组。此外,Obj和FieldC的输入结构比这里复杂得多,我不能(或不
问题内容: 这是我的代码。请运行脚本以查看其工作方式: 从上面的代码中,我的数据数组包含对象,这些对象具有用户名,他的电话号码和他所属的呼叫队列。 我分别有四个呼叫队列111,456,201和665。 一个用户可以处于任意数量的呼叫队列中。我已经过滤了控制器中的数据,以使其仅显示前端中属于队列111或队列456的用户。 因此,根据我的代码,用户Edmond属于队列665,因此其详细信息不会显示在前
问题内容: 我有以下mongodb文件结构: 我已经能够使用$ elemMatch来更新操作中的字段,但是当我尝试对参数执行相同的操作(修改)时,它似乎不起作用。我想知道我应该尝试哪种其他方法,以便能够成功更新特定参数中的字段(通过其pid查找)。 我当前拥有但不起作用的更新代码如下所示: 问题答案: MongoDB 3.6及更高版本 MongoDB3.6及更高版本提供了一项新功能,该功能允许您使
本文向大家介绍C ++中的数组嵌套,包括了C ++中的数组嵌套的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个长度为N的零索引数组A,其中包含从0到N-1的所有整数。我们必须找到并返回集合S的最长长度,其中S [i] = {A [i],A [A [i]],A [A [A [i []]],...}以下规则。现在考虑S中的第一个元素以索引= i的元素A [i]的选择开始,S中的下一个元素应为A
主要集合是零售商,其中包含用于商店的数组。每个商店都包含一系列优惠(您可以在此商店购买)。这提供了具有数组大小的数组。(见下面的例子) 现在我试图找到所有的优惠,这是在大小。 我尝试了这个查询: 我期待这样的输出: 但是,我的查询的输出还包含与XS、X和M不匹配的offer。 如何强制MongoDB只返回符合我查询的报价? 问候和感谢。