Vin*_*hua 5 javascript arrays object
目前我有3个阵列:
var idArray = [13, 24, 35];
var dateArray = [20181920, 20181120, 20172505];
var contentArray = ["content1", "content2", "content3"];
Run Code Online (Sandbox Code Playgroud)
我想将所有数组合并为一个对象而我尝试使用for循环但是却出现了错误:
var finalObj = {};
for (var y = 0; y < dateArray.length; y++) {
finalObj[y].id = idArray[y];
finalObj[y].date = dateArrayArrange[y];
finalObj[y].content = contentArray[y];
}
Run Code Online (Sandbox Code Playgroud)
我想达到的最终结果:
finalObj = [{id:13, date:20181920, content:"content1"},
{id:24, date:20181120, content:"content2"},
{id:35, date:20172505, content:"content3"}];
Run Code Online (Sandbox Code Playgroud)
finalObj 是一个对象,您需要在数组中推送值.除此之外,您还可以使用map将返回数组的数组方法,因此无需单独将值推送到数组.
在任何数组上使用map方法,并使用它index从其他数组中获取相应的值
var idArray = [13, 24, 35];
var dateArray = [20181920, 20181120, 20172505];
var contentArray = ["content1", "content2", "content3"];
let m = idArray.map(function(item, index) {
// here the map method will push the object to an
// array and will return that array
return {
id: item,
date: dateArray[index],
content: contentArray[index]
}
})
console.log(m)Run Code Online (Sandbox Code Playgroud)
您finalObj是一个对象数组,因此您必须将其初始化为数组,如下所示:
var finalObj = [];
var idArray = [13, 24, 35];
var dateArray = [20181920, 20181120, 20172505];
var contentArray = ["content1", "content2", "content3"];
for (var y = 0; y < dateArray.length; y++) {
finalObj.push(
{ id: idArray[y], date: dateArray[y], content : contentArray[y] }
)
}
Run Code Online (Sandbox Code Playgroud)
对于“推送到最终数组”部分,如果您添加额外的内容finalObj[y] = {}来初始化它,则循环内的代码可能会起作用,因此您有:
for (var y = 0; y < dateArray.length; y++) {
finalObj[y] = {}
finalObj[y].id = idArray[y];
finalObj[y].date = dateArray[y];
finalObj[y].content = contentArray[y];
}
Run Code Online (Sandbox Code Playgroud)
它有效但是
finalObj.push(
{ id: idArray[y], date: dateArray[y], content : contentArray[y] }
)
Run Code Online (Sandbox Code Playgroud)
我认为更短并且仍然可读:)