基于对象属性创建数组
Create array based on object properties
我想使用一个对象来配置应用程序的一些设置。我的想法是从这个开始:
var obj = {
property_one: 3;
property_two: 2;
property_three: 1;
}
我想以这个结束:
var array = [
'property_one','property_one','property_one',
'property_two','property_two',
'property_three'
]
我目前的解决方案是为每个属性执行此操作:
function theConstructor(){
for(i=1; i <= obj.property_one; i++){
this.array.push('property_one');
};
for(i=1; i <= obj.property_two; i++){
this.array.push('property_two');
};
for(i=1; i <= obj.property_two; i++){
this.array.push('property_two');
};
}
但这很乏味,因为我可能有很多属性,这些属性可能会随着应用程序的发展而改变。
我知道我可以像这样遍历object
的属性:
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
array.push(key);
}
}
但这会将值推送到数组,而不是键(作为字符串)。关于如何更有效地做到这一点的任何想法?
试试这个
function theConstructor(){
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
for(var i=1; i <= obj[key]; i++){
this.array.push(key);
};
}
}
}
Using Array.prototype.reduce():
var obj = {
property_one: 3,
property_two: 2,
property_three: 1
};
var resultArray = Object.keys(obj).reduce(function(result, curItem) {
for (var index = 0; index < obj[curItem]; index++) {
result.push(curItem);
}
return result;
}, []);
document.write(JSON.stringify(resultArray));
相关文章:
- 使用导航属性创建Kendo UI网格模型的问题
- Reactjs基于jsx中的属性创建条件组件
- JQuery 从类选择器上的数据属性创建一个数组
- 基于对象属性创建数组
- 融合图表 - 如何获取使用链接属性创建的更新融合图表 json
- 从 ASP.NET Web 窗体中的服务器端属性创建 JavaScript 条件
- 如何从子对象属性创建新数组
- 按属性创建唯一对象的数组
- 使用DOM中定义的html5数据属性创建新元素
- 使用JavaScript中的过滤元素属性创建对象
- 使用现有对象属性创建javascript对象
- 如何为Object.define()定义的属性创建唯一的toJSON方法
- 使用innerHTML属性创建页面加载计数器
- 根据指定的数据属性创建一个包含值和文本的select下拉选项
- 使用其他对象的属性创建对象
- 作为类的函数-为私有属性创建getter和setter
- 当鼠标悬停在由相同数据条目的不同属性创建的圆形元素时,我如何显示/隐藏文本元素?
- jQuery用动态ID和定义的CSS属性创建DIV(定义该DIV的外观和位置)
- 如何在ECMAScript 5: Object中配置属性.创建或定义对象属性
- 附加一个作为对象属性创建的元素