原数组是这样的,下标为0代表1月的数据为1,下标为1代表2月的数据为3,以此类推
data: [1, 3, 0, 0, 0, 0,0, 0, 0, 0, 0, 0,]
后台返回的数据是这样的:name代表5月,shu代表5月的数据是2000,
datas:[{name:5,shu:2000},{name:6,shu:7000},{name:7,shu:8000}],
返回数据不一定,有可能是567月,也有可能是56789月,
问题:怎么可以根据后台返回的数据,把每一月对应的数据放在原数组中,
data[datas[key].name - 1] = datas[key].shu
循环datas就行了
let month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; //月份
let data = [{ name: 5, shu: 2000 }, { name: 6, shu: 7000 }, { name: 7, shu: 8000 }, { name: 5, shu: 900 }]; //数据
let a = Fn(month, data);
console.log(a)
function Fn(month, data) {
let v = [];
month.map((mon) => {
let obj = {};
obj.name = mon;
obj.data = [];
v.push(obj);
})
data.map((item) => {
v.map((item1) => {
if (item1.name == item.name) {
item1.data.push(item);
}
})
})
return v;
}
for(var i in datas){data[datas[i].name - 1] = datas[i].shu}
dates是一个数组,循环它,这个数组的元素是对象(json),每次循环时取到对象的name值和shu值,根据你的意思,如果name是5,shu是2000({name:5,shu:2000}),那么这个值应该放到下标(5-1)上面,将原数组下标(5-1)的位置赋值为2000
private void AAA()
{
string[] month = new string[] { "1", "3","0", "0", "0", "0", "0", "0", "0", "0", "0", "0" };
var data = new List<Info>()
{
new Info() {name =5,shu=2000 },
new Info() {name =6,shu=7000 },
new Info() {name =7,shu=8000 }
}.ToArray();
foreach (var item in data)
{
month[item.name - 1] = item.shu.ToString();
}
}