Javascript 将对象键转到数组索引并返回一个新数组
我试图解决这个问题,我有一个包含键值对的对象,并寻找一种方法将每个键分配给一个特定的索引并返回一个新数组。 请注意:当找不到键时,索引应分配给0,因为它从1到12开始,而不是索引0Javascript 将对象键转到数组索引并返回一个新数组,javascript,arrays,Javascript,Arrays,我试图解决这个问题,我有一个包含键值对的对象,并寻找一种方法将每个键分配给一个特定的索引并返回一个新数组。 请注意:当找不到键时,索引应分配给0,因为它从1到12开始,而不是索引0 var obj = { 4: 7, 6: 8, 7: 6, 8: 8, 9: 3, 10: 6, 11: 4, 12: 3 }; 结果将是: var output = [0, 0, 0, 7, 0, 8, 6, 8, 3, 6, 4, 3]; 感谢您的帮助。您可以在对象中获取最大关
var obj = {
4: 7,
6: 8,
7: 6,
8: 8,
9: 3,
10: 6,
11: 4,
12: 3
};
结果将是:
var output = [0, 0, 0, 7, 0, 8, 6, 8, 3, 6, 4, 3];
感谢您的帮助。您可以在对象中获取最大关键点,然后使用创建一个长度等于最大关键点的数组。对于
Array.from()
,您可以提供一个映射函数,用于从对象填充数组:
const obj={4:7,6:8,7:6,8:8,9:3,10:6,11:4,12:3};
const length=Math.max(…Object.keys(obj));
const res=Array.from({length},(u,i)=>obj[i+1]| | 0);
控制台日志(res)代码>
。作为控制台包装{max height:100%!important;}/*忽略*/
联机运行此操作:
您可以使用Array.prototype.map
实现它。更多关于
var obj={
4: 7,
6: 8,
7: 6,
8: 8,
9: 3,
10: 6,
11: 4,
12: 3
};
设a=[];
Object.keys(obj.map)(val=>a[val-1]=obj[val]);
a=数组。从(a,i=>i | | 0);
控制台日志(a)代码>您可以使用以下方法实现此目的:
说明:
创建一个包含12个元素的新数组
用0填充它
map
-对于数组中的每个元素,使用index+1
从obj
中获取值(如您所说,您的对象具有基于1的键,而不是基于0的键)
或者,如果这些密钥不存在,只需返回原始密钥(即0)
这很有效。我不太明白这行[…数组(maxIndex+1).keys()]是如何工作的。你能给我解释更多的细节吗?感谢您的帮助。[…数组(maxIndex+1).keys()]=[0,1,2,3,4,5,6,7,8,9,10,11,12],只需在runkit url中尝试即可查看结果。
let keys = Object.keys(obj);
let maxIndex = Math.max(...keys);
let output = [];
[...Array(maxIndex + 1).keys()].forEach( i =>
output.push(keys.includes("" + i)? obj[i] : 0)
});
const obj = {
4: 7,
6: 8,
7: 6,
8: 8,
9: 3,
10: 6,
11: 4,
12: 3
};
const output = new Array(12).fill(0).map( (cur, index) => obj[index + 1] || cur)