我正在尝试从数组内的对象中推送值

时间:2019-02-13 13:25:24

标签: javascript json object push

我试图推送来自对象(键/值)数组的数据,然后将其推送到数组中,以便稍后显示。

我已经尝试过在数组内部进行推送,但是直到现在,它始终无法确定要推送的项目总数。

//array
var clients_array = '[{"code": "1", "name": "client 1"}, 
{"code": "2", "name": "client 2"}, {"code": "3", "name": "client 3"}]';

var displayClient = [];

var json_parse1 = JSON.parse(clients_array);
json_parse1.forEach(function(client){
    console.log(client.code + ' - ' + client.name);
    displayClient.push(client.code + ' - ' + client.name);
    alert(displayClient[i]);
})

使用上面的代码,在console.log中,我获得了想要推送的正确数据。但是,当警告displayClient数组(在这种情况下应使用console.logged数据填充)时,它会为每个数据显示未定义。因此,我想推送console.log中显示的正确数据。

1 个答案:

答案 0 :(得分:4)

您需要在回调函数中为i添加一个参数。

json_parse1.forEach(function (client, i) {
                                      ^

var clients_array = '[{"code": "1", "name": "client 1"}, {"code": "2", "name": "client 2"}, {"code": "3", "name": "client 3"}]';

var displayClient = [];

var json_parse1 = JSON.parse(clients_array);
json_parse1.forEach(function (client, i) {
    console.log(client.code + ' - ' + client.name);
    displayClient.push(client.code + ' - ' + client.name);
    alert(displayClient[i]);
})

console.log(displayClient);

更好的方法是使用Array#map并返回新项目。

var array = [{ code: "1", name: "client 1" }, { code: "2", name: "client 2" }, { code: "3", name: "client 3" }],
    displayClient = array.map(({ code, name }) => [code, name].join(' - '));

console.log(displayClient);