首页 > 解决方案 > 在数组内每个值的中间插入值

问题描述

我有一个数组的值['a', 'b', 'c', 'd', 'e']现在我希望它成为一个具有它的值的对象所以我做了一些数组映射

const arrs = ['a', 'b', 'c', 'd', 'e']
let arrObj = arrs.map(arr => {
    return {value: arr}
})

现在的arrObj值为

[{value: 'a'}, {value: 'b'}, {value: 'c'}, {value: 'd'}, {value: 'e'}]

但我想要做的是在数组内的每个对象中间插入一个对象,该对象{operator: '+'}的值arrObj

[{value: 'a'}, {operator: '+'}, {value: 'b'}, {operator: '+'}, {value: 'c'}, {operator: '+'}, {value: 'd'}, {operator: '+'}, {value: 'e'}]

现在,使用 javascript,如果我在 array.map() 中设置了 arrObj 的值,我该如何实现该功能?

标签: javascriptarraysjsonobject

解决方案


一种选择是将每个元素(但最后一个)映射到具有该元素的数组和另一个具有 的数组+,然后展平:

const arrs = ['a', 'b', 'c', 'd', 'e'];
const transformed = arrs
  .map((char, i) => (
    i === arrs.length - 1
    ? [{ value: char }]
    : [{ value: char }, { value: '+' }]
  ))
  .flat();
console.log(transformed);

如果+不会出现在输入数组中,那么您可以先加入+,然后拆分:

const arrs = ['a', 'b', 'c', 'd', 'e'];
const output = arrs
  .join('+')
  .split('')
  .map(value => ({ value }));
console.log(output);


推荐阅读