首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript递归运算阵列

JavaScript递归运算阵列
EN

Stack Overflow用户
提问于 2020-01-17 05:13:43
回答 2查看 69关注 0票数 2

我有这样的数组(arr),如何获得类似(arr2)的数组?其中'start‘和'end’元素是固定值。

原始数组:

代码语言:javascript
运行
复制
var arr = [
  {form: 'start', to: 'task-1'},
  {form: 'start', to: 'task-4'},
  {form: 'task-1', to: 'task-2'},
  {form: 'task-2', to: 'end'},
  {form: 'task-1', to: 'task-3'}
]
console.log(arr)

期望数组:

代码语言:javascript
运行
复制
var arr2 = [
  {form: 'start', to: 'task-1'},
  {form: 'task-1', to: 'task-2'},
  {form: 'task-2', to: 'end'},
]
console.log(arr2)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-17 05:58:08

递归查找对象并将其推送到结果数组。这是示例代码。

代码语言:javascript
运行
复制
var arr = [
  {form: 'start', to: 'task-1'},
  {form: 'start', to: 'task-4'},
  {form: 'task-1', to: 'task-2'},
  {form: 'task-2', to: 'end'},
  {form: 'task-1', to: 'task-3'}
]


const getTo = search => arr.find(x => x.form === search).to;

let form = 'start';
let to = '';
const res = [];

while (to !== 'end') {
  to = getTo(form);
  res.push({form, to});
  form = to;
}

console.log(res)

票数 1
EN

Stack Overflow用户

发布于 2020-01-17 05:47:53

就在这里。

代码语言:javascript
运行
复制
var arr = [
  {form: 'start', to: 'task-1'},
  {form: 'start', to: 'task-4'},
  {form: 'task-1', to: 'task-2'},
  {form: 'task-2', to: 'end'},
  {form: 'task-1', to: 'task-3'}
]
// console.log(arr);

const obj = arr.reduce((accum, value) => {
    const formId = value.form; 
    const to = value.to; 
    if (!accum[formId]) {
        accum[formId] = to;
    }
    return accum;
}, {});

const arr2 = Object.entries(obj).map(([key, value]) => {
    return {
        form: key, 
        to: value
    }
});
console.log(arr2);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59781582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档