使用javascript

时间:2018-12-19 08:48:15

标签: javascript arrays json object

我有一个像这样的数据对象:

{ '108': '4',
  '1001': '4',
  '1027': '1',
  '1128': '2',
  '1284': '1',
  '1300': '4',
  '1313': '4',
  '1327': '2',
  '1334': '1',
  '1351': '4',
  '1356': '1' }

在这里,例如'108'是键,而'4'是值。

我已经声明了一个名为valuearray的数组;

现在我想将数据对象放入extarray。

我做了什么:

        var x;
        var count = 0;
        for(x in data){
            extarray[count] = data[x];
            count++;
        }

x引用数据对象中的键 我已经使用了count变量来设置extarray中的索引。

当我执行console.log(extarray)时,它给我的输出为

[ '4',
  '4',
  '1',
  '2',
  '1',
  '4',
  '4',
  '2']

但是我对console.log(extarray)的预期输出是:

      ['108': '4',
      '1001': '4',
      '1027': '1',
      '1128': '2',
      '1284': '1',
      '1300': '4']

其中108是键,而4是参考上述预期数组的值。如果我像extarray [x]那样做,那么它将无法按预期工作。

我的基本要求是数据对象和extarray中的键和值应该相同 如果我执行extarray [1001],则输出应为4(请参阅数据对象) 我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以使用sparse array从对象创建Array.from()

要查找新数组的长度,请使用Object.keys()获取对象的键,并通过spreadingMath.max()中找到最大值。

const obj = {"108":"4","1001":"4","1027":"1","1128":"2","1284":"1","1300":"4","1313":"4","1327":"2","1334":"1","1351":"4","1356":"1"};
  
const arr = Array.from({ ...obj, length: Math.max(...Object.keys(obj)) });

console.log(arr[1001]); // 4
console.log(arr['1027']); // 1

console.log(arr);