我知道使用php相当简单,但是用javascript来说对我来说更难。
我希望输出如下:
{
"data": [
{
"id": "1",
"message": "..."
},
{
"id": "2",
"message": "..."
},
{
"id": "3",
"message": "..."
},
{
"id": "4",
"message": "..."
},
{
"id": "5",
"message": "..."
}
]
}
我尝试过,但是没有达到预期。
var data = [];
var array = ["message 1", "message 2", "message 3", "message 4", "message 5"];
array.forEach((messsage, key) => {
data["data"] = {
id: key + 1,
message: messsage
}
});
console.log(data);
答案 0 :(得分:4)
data["data"]
分配给data
变量上的属性data
。您应该改用.map
,在将一个数组转换为另一个数组时,它比forEach
更合适:
var array = ["message 1", "message 2", "message 3", "message 4", "message 5"];
var data = array.map((message, i) => ({
id: i + 1,
message
}));
console.log(data);
如果您要使用forEach
,则修复原始代码的正确方法是在每次迭代中将push
更改为data
:
var data = [];
var array = ["message 1", "message 2", "message 3", "message 4", "message 5"];
array.forEach((messsage, key) => {
data.push({
id: key + 1,
message: messsage
})
});
console.log(data);
答案 1 :(得分:0)
您想要的data
不是您创建的data
。似乎您想从Object
创建一个Array
,其中包含一个属性:data
。您可以使用Array.map一口气做到这一点。
const data = {
data: ["message 1", "message 2", "message 3", "message 4", "message 5"]
.map( (value, index) => ( {id: index + 1, message: value} ) )
};
您可以为其创建一个更通用的函数:
console.log(createData("message 1", "message 2", "message 3", "message 4", "message 5"));
function createData(...messages) {
// 'messages' can be an array, or a number of arguments
messages = messages[0].constructor === Array ? messages[0] : Array.from(messages)
return {
data: messages
.map( (value, index) => ( {id: index + 1, message: value} ) )
};
}
答案 2 :(得分:-1)
这是一个例子
var data = [];
var array = ["message 1", "message 2", "message 3", "message 4", "message 5"];
var key=0;
array.forEach((element) => {
key=key+1
data.push({
"id": key,
"message": element[key-1]
})
});
console.log(data);