【发布时间】:2020-06-21 20:12:55
【问题描述】:
例如
obj = {a:2, b:3, c:1}
转换后的数组是:
['a','a','b','b','b','c']
【问题讨论】:
标签: javascript arrays algorithm object data-structures
例如
obj = {a:2, b:3, c:1}
转换后的数组是:
['a','a','b','b','b','c']
【问题讨论】:
标签: javascript arrays algorithm object data-structures
获取条目并使用所需长度的数组获取平面地图,并用键填充数组。
const
object = { a: 2, b: 3, c: 1 },
result = Object
.entries(object)
.flatMap(([key, value]) => Array(value).fill(key));
console.log(result);
【讨论】:
您可以使用reduce:
const obj = {a:2, b:3, c:1};
const res = Object.keys(obj).reduce((arr, key) => {
return arr.concat( new Array(obj[key]).fill(key) );
}, []);
console.log(res); // ["a","a","b","b","b","c"]
说明:
Object.keys() 返回一个包含所有键的数组:["a", "b", "c"]
然后我们用reduce 循环遍历它们,同时我们构建了一个数组。对于每个键,我们创建一个与值长度相同的新数组,并用键(a、b...)填充它。
然后我们将它们与concat 连接在一起。
【讨论】:
试试:
let obj = { a:2, b:3, c:1 }
let newObj = [];
for (var key in obj) {
while (obj[key]) {
newObj.push(key);
obj[key]--;
}
}
console.log(newObj);