从Javascript中的数组创建新的对象数组

时间:2018-07-10 14:55:16

标签: javascript

所以我觉得这应该很容易,但是我无法弄清楚。

为简化起见,我需要动态生成一个数组。然后,我需要我的代码基于该数组的中间部分来构建对象列表。

array = [a, b, c, d];
start = array[0];
finish = array[array.length - 1];
middle = [
  { middle: array[1] },
  { middle: array[2] }
] 

我需要此属性是动态的,因此由于数组长度未设置为固定值,因此无法对中间值进行硬编码。我以为我需要一个loop函数来遍历数组,但是除了在DOM中创建一个列表之外,我从没有用它。我觉得我想得太多了,因为这应该很容易...尽管我所做的一切都会破坏我的代码。

我最近的尝试是:

middle = [
  for (i = 1; i < array.length - 2; i++) {
    return { middle: array[i] };
  }
]

我想我明白为什么它不起作用。它只是返回我想要的东西,但我认为价值永远不会被存储。

3 个答案:

答案 0 :(得分:3)

只需通过映射到目标格式来调整@chazsolo对预期输出的回答即可。

const array = [1,2,3,4,5];
const middle = array.slice(1, -1).map(item => ({middle: item}));
console.log(middle);

答案 1 :(得分:1)

使用slice来获取您要查找的值

const array = [1,2,3,4,5];
const middle = array.slice(1, -1);

console.log(middle);

这将返回一个新数组,其中包含除第一个和最后一个值之外的所有值。


如果您不使用或无法使用map,那么仍然可以使用for循环:

const array = [1,2,3,4,5];
const middle = array.slice(1, -1);

for (let i = 0; i < middle.length; i++) {
  middle[i] = {
    middle: middle[i]
  };
}

console.log(middle);

答案 2 :(得分:0)

定义一个数组,然后将要插入的任何内容推入数组。

let array = ['a', 'b', 'c', 'd']
let middles = []
for (i = 1; i < array.length - 1; i++) {
  middles.push({ middle: array[i] })
}
console.log(middles)

如果您想了解更多信息,请选中Array