JavaScript数组的拼凑问题

发布于 2022-09-04 02:18:50 字数 348 浏览 8 评论 0

有如下代码:

var arr1 = [1,2,3,4,5,6,7,8,9,10,11,12];

var arr2 = [{
    count:3,
    month:5,
   },
   {
    count:6,
    month:7
   }];
现在需要合成另外一个数组:
var result = [null,null,null,null,null,3,null,6,null,null,null,null];

即:所求数组有数据(3,5)的为arr2中的count的值,所在的下标为arr2中的month的值,其他置空,数组长度为arr1的长度,请问应该怎么做?

新手求大神指点

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

明媚如初 2022-09-11 02:18:50

完全无法理解你的描述。看起来像是一个根据月份的统计数据用数组来展现。
另外你的arr2里面mouth:5后面的 ,要去掉
那么这样的话你的arr1没有存在的必要。

var arr2 = [{
    'count':3,
    'month':5
   },
   {
    'count':6,
    'month':7
   },
   {
    'count':7,
    'month':2
   },
   {
    'count':1,
    'month':8
   },
   {
    'count':2,
    'month':1
   }];
console.table(arr2);
console.log(arr2);
var arrResult = [];
arrResult.length = 11;
for (var i = arrResult.length - 1; i >= 0; i--) {
    arrResult[i] = null;
};
for (var i = arr2.length - 1; i >= 0; i--) {
    arrResult[arr2[i].month]=arr2[i].count;
};
console.log(arrResult);
// 输出[null, 2, 7, null, null, 3, null, 6, 1, null, null]
//不做循环null处理的话输出 [1: 2, 2: 7, 5: 3, 7: 6, 8: 1] 
// 前面数字是下标,后面是值,别忘了数组也是对象。
澜川若宁 2022-09-11 02:18:50

说实话,没看出合并的倾向啊,如果lenth算的话

function getArrByMerge(arr1, arr2) {
  let len = arr1.length;
  let res = new Array(len).fill(null);
  arr2.forEach((v) => {
    if (!v || v.month >= len) return;
    res[v.month] = v.count;
  });
  return res;
}
console.log(getArrByMerge(arr1, arr2))
你对谁都笑 2022-09-11 02:18:50

给你个简单易懂的方法,还有更好的写法

先将数组 arr1 全部置为 null

for (i = 0; i < arr1.length; i++) {
  arr1[i] = null;
}

然后循环 arr2 中的数据赋值到 arr1 的对应位置

for (j = 0; j < arr2.length; j++) {
  var count = arr2[j].count,
      month = arr2[j].month  
  arr1[month] = count;
}

就能得到你的预期效果了

献世佛 2022-09-11 02:18:50

for(i=0;i<arr1.length;i++){

    arr1[i]=null
}
for(i=0;i<arr2.length;i++){
    arr1[arr2[i].month]=arr2[i].count
}
console.log(arr1)
盗梦空间 2022-09-11 02:18:50

js的数组允许给指定下标的元素直接赋值。

var rslt=[]//new Array(12),先分配13个元素也可以
var arr2 = [{
    count:3,
    month:5,
   },
   {
    count:6,
    month:7
   }];

for(d in arr2){
    rslt[arr2[d].month]=arr2[d].count
}
console.log(rslt)//[5: 3, 7: 6]
console.log(rslt[5],rslt[7])//3 6
铜锣湾横着走 2022-09-11 02:18:50
var result = arr1.map(function(month){
    // if month in arr2, return 对应的count;
    // else, return null
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文