2017-04-25 120 views
-2
let Array: any = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] 

我怎么可以转换这个数组为对象象下面这样:创建基于阵列的JavaScript对象

let Object: any = { 
    time: { 
     headerName: "" 
    }, 
    monday: { 
     headerName: "Monday" 
    }, 
    tuesday: { 
     headerName: "Tuesday" 
    }, 
    wednesday: { 
     headerName: "Wednesday" 
    }, 
    thursday: { 
     headerName: "Thursday" 
    }, 
    friday: { 
     headerName: "Friday" 
    }, 
    saturday: { 
     headerName: "Saturday" 
    }, 
    sunday: { 
     headerName: "Sunday" 
    } 
}; 

任何想法的家伙?对不起,刚接触JavaScript的人很安静。我怎么写一个for循环,以便我可以实现这个结果?在此先感谢球员

+2

你尝试过什么吗? –

+0

是的,试着循环遍历数组。但我卡在对象部分 – blackdaemon

+0

不知道如何继续。是否我用我期望的数据结构声明对象 – blackdaemon

回答

3

只是试试这个

var any = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] 
 
var outputObj = { //create a new object with one default value 
 
    time: { 
 
    headerName: "" 
 
    } 
 
}; 
 
any.forEach(function(item) { //iterate the any array and then keep adding key and values to new Object 
 
    outputObj[item] = { 
 
    headerName: capitalizeFirstLetter(item) 
 
    }; 
 
}); 
 

 
function capitalizeFirstLetter(string) { 
 
    return string.charAt(0).toUpperCase() + string.slice(1); 
 
} 
 

 
console.log(outputObj);

+0

非常感谢Gurvinder。我可以知道什么是“任何”阵列? – blackdaemon

+0

@blackdaemon它是具有星期几名称的数组,因为它在您的问题中给出。 – gurvinder372

+0

哦,你的意思是'阵列'。可以感谢Gurvider – blackdaemon

3

var result = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"].reduce(function (acc, element) { 
 
    acc[element] = {}; 
 
    acc[element].headerName=element; 
 
    return acc; 
 
}, {time: ""}); 
 
console.log(result);

您可以使用reduce转换在JavaScript中的对象。

any.reduce(function (acc, element) { 
    acc[element] = {}; 
    acc[element].headerName=element; 
    return acc; 
}, {time: ""}) 
+0

请在发布前尝试运行它! –

+0

现在好多了:) –

+0

对不起,只是我的想法。我很快修复了我的代码:) –

2

var any = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]; 
 

 
var res ={}; 
 
res['time'] ={headername:""}; 
 
any.map(function(a){ 
 
res[a] = {headername:a} 
 

 
}) 
 
console.log(res)

0
Using For loop. 

function toObject(arr) { 
 
    var rv = {}; 
 
    for (var i = 0; i < arr.length; ++i) 
 
    if (arr[i] !== undefined) rv[arr[i]] = {"headerName":arr[i]}; 
 
    console.log(rv); 
 
} 
 
toObject(["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]);