我有一些数组,如果它们包含相似的值,我想返回这些数组的名称。
var x = { "food": ['bacon', 'cheese', 'bread', 'tomato'], "utilities": ['plates', 'forks', 'spatulas'], "guests": ['john', 'matt', 'bill'] }, y = ['bacon', 'tomato', 'forks'];
我的变量x
中有多个数组,它们的名称可以是food
、utilities
或guests
。变量y
只包含在x
的某些数组中相同的值。我需要返回包含bacon
、tomato
和forks
的数组的名称。所以对于这个例子,我需要返回:["food", "utilities"]
。
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));
运行此函数时,我遇到了一个错误*********
。如何获取一个返回["food", "utilities"]
的数组呢?
y
的情况下才会发生这种情况 - 算了 :) - tymeJVlet
,我可以轻松地用function()
替换它吗? - Ackadoslet
是代替var
的一个新关键字,如果您打算在现代浏览器中使用它或者使用转译器,那么可以将其替换。不过,箭头函数也可以用function()
来替换。我编辑了答案,使用了普通函数和var
。 - baao.reduce()
。 - cнŝdk