【发布时间】:2018-03-01 22:45:07
【问题描述】:
在一个对象数组中,我需要找到一个 value -- 其中 key 是 activity :但是 activity key 可以像这样深入嵌套在数组中:
const activityItems = [
{
name: 'Sunday',
items: [
{
name: 'Gym',
activity: 'weights',
},
],
},
{
name: 'Monday',
items: [
{
name: 'Track',
activity: 'race',
},
{
name: 'Work',
activity: 'meeting',
},
{
name: 'Swim',
items: [
{
name: 'Beach',
activity: 'scuba diving',
},
{
name: 'Pool',
activity: 'back stroke',
},
],
},
],
},
{} ...
{} ...
];
所以我写了一个递归算法来找出某个活动是否在数组中:
let match = false;
const findMatchRecursion = (activity, activityItems) => {
for (let i = 0; i < activityItems.length; i += 1) {
if (activityItems[i].activity === activity) {
match = true;
break;
}
if (activityItems[i].items) {
findMatchRecursion(activity, activityItems[i].items);
}
}
return match;
};
是否有ES6 方法来确定活动是否存在于这样的数组中?
我尝试过这样的事情:
const findMatch(activity, activityItems) {
let obj = activityItems.find(o => o.items.activity === activity);
return obj;
}
但这不适用于深度嵌套的活动。
谢谢
【问题讨论】:
标签: javascript arrays algorithm es6-modules