Javascript 从数组中向对象添加值,并且在数组用完时不会变为未定义
我有一个带params的函数,我正在做一个forEach循环来添加循环中的所有值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
然后我将它们放入一个巨大的阵列中:
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"