使用for循环将值添加到数组

时间:2018-08-25 06:11:41

标签: javascript

我知道使用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);

3 个答案:

答案 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);