AMNLLY 2018-10-16 16:11 采纳率: 0%
浏览 1328

js push()后 数组顺序发生改变,但数组console第0位和整体console的第0位不同

代码如下:
var dataValue = [];
for(var ii=0;ii<data.length;ii++){
// console.log(dataValue)
var ky = {province:'', oneLevel:'', twoLevel:'', busCount:'', scaling:'', increase:'' };
//s console.log(data[i][0])
ky.province=data[ii][0];
ky.oneLevel=data[ii][1];
ky.twoLevel=data[ii][2];
ky.busCount=data[ii][3];
ky.scaling=data[ii][4];
ky.increase=data[ii][5];

                 dataValue.push(ky);

           }
           console.log(dataValue);
           console.log(dataValue[0])
                    **  后台返回数据**

0: (6) ["第二个", "uoo", "小计", 1, 1, 1]
1: (6) ["第二个", "wqe", "小计", 1, 1, 1]
2: (6) ["第二个", "一", "231", 1, 3, 1]
3: (6) ["第二个", "一", "二", 2, 2, 1]
4: (6) ["第二个", "一", "小计", 2, 2, 1]
5: (6) ["第一个", "uoo", "23", 2, 2, 1]
6: (6) ["第一个", "uoo", "如图", 2, 2, 1]
7: (6) ["第一个", "uoo", "小计", 5, 2, 0.4]
8: (6) ["第一个", "wqe", "41", 2, 3, 1]
9: (6) ["第一个", "wqe", "无法", 2, 3, 1]
10: (6) ["第一个", "wqe", "小计", 2, 1, 0.5]
11: (6) ["第一个", "一", "231", 4, 1, 1]
12: (6) ["第一个", "一", "二", 1, 1, 1]
13: (6) ["第一个", "一", "小计", 1, 2, 2]
**整体console
0: {province: "第一个", oneLevel: "uoo", twoLevel: "小计", busCount: 5, scaling: 2, …}
1: {province: "第二个", oneLevel: "uoo", twoLevel: "小计", busCount: 1, scaling: 1, …}
2: {province: "第二个", oneLevel: "一", twoLevel: "231", busCount: 1, scaling: 3, …}
3: {province: "第二个", oneLevel: "一", twoLevel: "二", busCount: 2, scaling: 2, …}
4: {province: "第二个", oneLevel: "一", twoLevel: "小计", busCount: 2, scaling: 2, …}
5: {province: "第一个", oneLevel: "uoo", twoLevel: "23", busCount: 2, scaling: 2, …}
6: {province: "第一个", oneLevel: "uoo", twoLevel: "如图", busCount: 2, scaling: 2, …}
7: {province: "第二个", oneLevel: "wqe", twoLevel: "小计", busCount: 1, scaling: 1, …}
8: {province: "第一个", oneLevel: "wqe", twoLevel: "41", busCount: 2, scaling: 3, …}
9: {province: "第一个", oneLevel: "wqe", twoLevel: "无法", busCount: 2, scaling: 3, …}
10: {province: "第一个", oneLevel: "wqe", twoLevel: "小计", busCount: 2, scaling: 1, …}
11: {province: "第一个", oneLevel: "一", twoLevel: "231", busCount: 4, scaling: 1, …}
12: {province: "第一个", oneLevel: "一", twoLevel: "二", busCount: 1, scaling: 1, …}
13: {province: "第一个", oneLevel: "一", twoLevel: "小计", busCount: 1, scaling: 2, …}

只console第一个
{province: "第二个", oneLevel: "uoo", twoLevel: "小计", busCount: 1, scaling: 1, …}

两个不一样,为什么?
求大神帮忙解答

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 07:24
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在JavaScript中,push()方法会将新元素添加到数组的末尾。这可能导致数组的索引发生变化,因为数组的索引是从0开始的。

    如果你想要保持数组的原始索引不变,你可以使用以下方法之一:

    1. 使用 shift()unshift() 方法:

      var dataValue = [];
      for(var ii=0;ii<data.length;ii++){
          if(ii > 0){
              dataValue.shift();
          }
          dataValue.push({province:'', oneLevel:'', twoLevel:'', busCount:'', scaling:'', increase:'' });
          dataValue[dataValue.length - 1].province = data[ii][0];
          dataValue[dataValue.length - 1].oneLevel = data[ii][1];
          dataValue[dataValue.length - 1].twoLevel = data[ii][2];
          dataValue[dataValue.length - 1].busCount = data[ii][3];
          dataValue[dataValue.length - 1].scaling = data[ii][4];
          dataValue[dataValue.length - 1].increase = data[ii][5];
      }
      
      console.log(dataValue);
      console.log(dataValue[0]);
      
    2. 使用 slice() 方法:

      var dataValue = [];
      for(var ii=0;ii<data.length;ii++){
          if(ii > 0){
              dataValue.slice(0,ii).unshift();
          }
          dataValue.push({province:'', oneLevel:'', twoLevel:'', busCount:'', scaling:'', increase:'' });
          dataValue[dataValue.length - 1].province = data[ii][0];
          dataValue[dataValue.length - 1].oneLevel = data[ii][1];
          dataValue[dataValue.length - 1].twoLevel = data[ii][2];
          dataValue[dataValue.length - 1].busCount = data[ii][3];
          dataValue[dataValue.length - 1].scaling = data[ii][4];
          dataValue[dataValue.length - 1].increase = data[ii][5];
      }
      
      console.log(dataValue);
      console.log(dataValue[0]);
      

    这两种方法都会保留原始数组中的索引。

    评论

报告相同问题?