我有这样的数组(arr),如何获得类似(arr2)的数组?其中'start‘和'end’元素是固定值。
原始数组:
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)
期望数组:
var arr2 = [
{form: 'start', to: 'task-1'},
{form: 'task-1', to: 'task-2'},
{form: 'task-2', to: 'end'},
]
console.log(arr2)
发布于 2020-01-17 05:58:08
递归查找对象并将其推送到结果数组。这是示例代码。
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)
发布于 2020-01-17 05:47:53
就在这里。
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);
https://stackoverflow.com/questions/59781582
复制相似问题