我有一个像这样的数据对象:
{ '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(请参阅数据对象) 我该怎么办?
答案 0 :(得分:2)
您可以使用sparse array从对象创建Array.from()
。
要查找新数组的长度,请使用Object.keys()
获取对象的键,并通过spreading到Math.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);