Javascript 从数组中向对象添加值,并且在数组用完时不会变为未定义

Javascript 从数组中向对象添加值,并且在数组用完时不会变为未定义,javascript,jquery,arrays,object,ecmascript-6,Javascript,Jquery,Arrays,Object,Ecmascript 6,我有一个带params的函数,我正在做一个forEach循环来添加循环中的所有值 然后我将它们放入一个巨大的阵列中: let arr = ['abc', 'xyz']; let x = []; arr.forEach(y => { x = [...x, ...data(y)]; }); 我还想向数据添加另一个键值对。我希望值来自数组: color\u数组=['red'、'blue'、'green'] 所以我做了: const data = (sd) => Object.en

我有一个带params的函数,我正在做一个forEach循环来添加循环中的所有值


然后我将它们放入一个巨大的阵列中:

let arr = ['abc', 'xyz'];
let x = [];
arr.forEach(y => {
  x = [...x, ...data(y)];
});
我还想向
数据添加另一个键值对。我希望值来自数组:

color\u数组=['red'、'blue'、'green']

所以我做了:

const data = (sd) => Object.entries(obj).map(([k, g]) => ({
            ['name']: k,
            ['data']: g.map(entry => entry[sd]),
            ['type']: sd,
            ['color']: color_arr[i++]
        }));
输出:

color: "red"
data: (3) [1, 2, 3]
name: "Jim"
type: "Manager"

color: "blue"
data: (3) [1, 2, 3]
name: "Steve"
type: "Manager"

color: "green"
data: (3) [1, 2, 3]
name: "John"
type: "Manager"
--------------------NEW SET----------------
color: undefined
data: (3) [1, 2, 3]
name: "John"
type: "CEO"

color: undefined
data: (3) [1, 2, 3]
name: "John"
type: "COO"
当我这样做时,因为我的数组中只有5个元素,其余的值都是未定义的。是否有任何方法可以从数组中添加元素,以从颜色数组的开头开始


我的意思是,对于每个
x=[…x,…数据(y)]
,添加到数据(y)中的颜色是否总是从
红色开始,而不是仅仅作为未定义的值进行赋值?

您可以使用模来循环颜色数组中的值。也就是说,计数器除以颜色数组长度的剩余部分

const color_数组=[“红色”、“蓝色”、“绿色”、“黑色”、“白色”];
设i=0;
对于(j=0;j<20;j++){
log(color_数组[i++%color_数组.length]);

}
为什么不使用
名称
而不是字符串为
['name']
?你有输入一个想要的输出的例子吗?@NinaScholz,我不知道你的意思是什么,有没有办法用每个
x=[…x,…data(y)]重新启动数组。因此,每次按下
data(y)
时,要添加的颜色数组中的值能否从头开始?您可以在循环内重置
i=0
。对不起,我该怎么做?您可以在循环上方定义变量
i
,并为每个
y
将其设置为零。例如:
let i;arr.forEach(y=>{i=0;x=[…x,…数据(y)];})
color: "red"
data: (3) [1, 2, 3]
name: "Jim"
type: "Manager"

color: "blue"
data: (3) [1, 2, 3]
name: "Steve"
type: "Manager"

color: "green"
data: (3) [1, 2, 3]
name: "John"
type: "Manager"
--------------------NEW SET----------------
color: undefined
data: (3) [1, 2, 3]
name: "John"
type: "CEO"

color: undefined
data: (3) [1, 2, 3]
name: "John"
type: "COO"