合并并获取然后推送到一个数组
Merge & get then push to one array
我有这样的数据:
let data = []
let weeks = [
{
"week": 1,
"crop": {
"aop": 1,
"actual": 2,
"kbm": 3
},
"hk": {
"aop": 4,
"actual": 5,
"kbm": 6
},
"outputHkAct": 7
},
{
"week": 2,
"crop": {
"aop": 11,
"actual": 12,
"kbm": 13
},
"hk": {
"aop": 14,
"actual": 15,
"kbm": 16
},
"outputHkAct": 17
},
]
我想每周在 crop(aop, actual, kbm), outputHkAct, hk(aop, actual, kbm), outputHkAct 中合并并获取值。
输出应该是:
data = [1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17]
有人可以帮忙吗?谢谢大家。
可以用forEach
:
解决
let data = []
let weeks = [
{
"week": 1,
"crop": {
"aop": 1,
"actual": 2,
"kbm": 3
},
"hk": {
"aop": 4,
"actual": 5,
"kbm": 6
},
"outputHkAct": 7
},
{
"week": 2,
"crop": {
"aop": 11,
"actual": 12,
"kbm": 13
},
"hk": {
"aop": 14,
"actual": 15,
"kbm": 16
},
"outputHkAct": 17
},
]
weeks.forEach(({crop,hk,outputHkAct})=>{
data.push(crop.aop);
data.push(crop.actual);
data.push(crop.kbm);
data.push(hk.aop);
data.push(hk.actual);
data.push(hk.kbm);
data.push(outputHkAct)
})
console.log(data)
你可以使用 for in loop 来帮助你遍历一个对象
let weeks = [
{
"week": 1,
"crop": {
"aop": 1,
"actual": 2,
"kbm": 3
},
"hk": {
"aop": 4,
"actual": 5,
"kbm": 6
},
"outputHkAct": 7
},
{
"week": 2,
"crop": {
"aop": 11,
"actual": 12,
"kbm": 13
},
"hk": {
"aop": 14,
"actual": 15,
"kbm": 16
},
"outputHkAct": 17
},
]
let allValues = [];
weeks.map(obj=>{
for(let key in obj){
if(key === 'crop' || key === 'hk'){
for(let k in obj[key]){
allValues.push(obj[key][k])
}
}else if(key === 'outputHkAct'){
allValues.push(obj[key])
}
}
})
console.log(allValues)
weeks 是一个对象数组。
因此,您必须遍历周数组(通过使用 for-of、for-in、while、map、reduce 等)来获取对象,现在您可以使用已知的键访问对象的值(裁剪(aop, actual, kbm), outputHkAct, hk(aop, actual, kbm), outputHkAct).
这里是使用reduce的例子。
let weeks = [
{
"week": 1,
"crop": {
"aop": 1,
"actual": 2,
"kbm": 3
},
"hk": {
"aop": 4,
"actual": 5,
"kbm": 6
},
"outputHkAct": 7
},
{
"week": 2,
"crop": {
"aop": 11,
"actual": 12,
"kbm": 13
},
"hk": {
"aop": 14,
"actual": 15,
"kbm": 16
},
"outputHkAct": 17
},
];
let data = [...weeks.reduce((v, { crop, hk, outputHkAct }) => [...v, ...Object.values(crop), ...Object.values(hk), outputHkAct], [])];
console.log(data);
我有这样的数据:
let data = []
let weeks = [
{
"week": 1,
"crop": {
"aop": 1,
"actual": 2,
"kbm": 3
},
"hk": {
"aop": 4,
"actual": 5,
"kbm": 6
},
"outputHkAct": 7
},
{
"week": 2,
"crop": {
"aop": 11,
"actual": 12,
"kbm": 13
},
"hk": {
"aop": 14,
"actual": 15,
"kbm": 16
},
"outputHkAct": 17
},
]
我想每周在 crop(aop, actual, kbm), outputHkAct, hk(aop, actual, kbm), outputHkAct 中合并并获取值。 输出应该是:
data = [1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17]
有人可以帮忙吗?谢谢大家。
可以用forEach
:
let data = []
let weeks = [
{
"week": 1,
"crop": {
"aop": 1,
"actual": 2,
"kbm": 3
},
"hk": {
"aop": 4,
"actual": 5,
"kbm": 6
},
"outputHkAct": 7
},
{
"week": 2,
"crop": {
"aop": 11,
"actual": 12,
"kbm": 13
},
"hk": {
"aop": 14,
"actual": 15,
"kbm": 16
},
"outputHkAct": 17
},
]
weeks.forEach(({crop,hk,outputHkAct})=>{
data.push(crop.aop);
data.push(crop.actual);
data.push(crop.kbm);
data.push(hk.aop);
data.push(hk.actual);
data.push(hk.kbm);
data.push(outputHkAct)
})
console.log(data)
你可以使用 for in loop 来帮助你遍历一个对象
let weeks = [
{
"week": 1,
"crop": {
"aop": 1,
"actual": 2,
"kbm": 3
},
"hk": {
"aop": 4,
"actual": 5,
"kbm": 6
},
"outputHkAct": 7
},
{
"week": 2,
"crop": {
"aop": 11,
"actual": 12,
"kbm": 13
},
"hk": {
"aop": 14,
"actual": 15,
"kbm": 16
},
"outputHkAct": 17
},
]
let allValues = [];
weeks.map(obj=>{
for(let key in obj){
if(key === 'crop' || key === 'hk'){
for(let k in obj[key]){
allValues.push(obj[key][k])
}
}else if(key === 'outputHkAct'){
allValues.push(obj[key])
}
}
})
console.log(allValues)
weeks 是一个对象数组。 因此,您必须遍历周数组(通过使用 for-of、for-in、while、map、reduce 等)来获取对象,现在您可以使用已知的键访问对象的值(裁剪(aop, actual, kbm), outputHkAct, hk(aop, actual, kbm), outputHkAct).
这里是使用reduce的例子。
let weeks = [
{
"week": 1,
"crop": {
"aop": 1,
"actual": 2,
"kbm": 3
},
"hk": {
"aop": 4,
"actual": 5,
"kbm": 6
},
"outputHkAct": 7
},
{
"week": 2,
"crop": {
"aop": 11,
"actual": 12,
"kbm": 13
},
"hk": {
"aop": 14,
"actual": 15,
"kbm": 16
},
"outputHkAct": 17
},
];
let data = [...weeks.reduce((v, { crop, hk, outputHkAct }) => [...v, ...Object.values(crop), ...Object.values(hk), outputHkAct], [])];
console.log(data);