【发布时间】:2019-10-04 08:26:56
【问题描述】:
我正在尝试创建一个从输入对象数组获得的多个值的单一数组。理想情况下,我想使用“ES5”功能来做到这一点。
我需要像这样转换一个对象:
{
image: "bat",
count: 5
}
进入这个数组[bat, bat, bat, bat, bat]
我认为代码是最快的解释方式:
//game object state
var gameObj = {
objects: [
{
image: "bat",
count: 5
},
{
image: "spider",
count: 4
},
{
image: "frankie",
count: 3
}
],
imagesArr: [],
}
function gameObjectArrayBuilder(obj) {
var resultArr = [];
resultArr = obj.map(buildArr);
function buildArr(prop) {
var image = prop.image;
var count = prop.count;
while (prop.count > 0) {
prop.count--
return prop.image
}
}
return resultArr;
}
gameObj.imagesArr = gameObjectArrayBuilder(gameObj.objects);
//View result
var html = document.querySelector("#content");
html.innerHTML = gameObj.imagesArr;
console.log(gameObj.imagesArr)
//Result should be
//[bat, bat, bat, bat, bat, spider, spider, spider, spider, frankie, frankie, frankie]
<div id="content">
</div>
【问题讨论】:
-
你总是在
while的第一次迭代中返回 -
更好的答案:
const arr = gameObj.objects.flatMap(e => Array(e.count).fill(e.image));
标签: javascript