admin管理员组

文章数量:1391735

Initially I was working with a CSV, where each row contained data e.g.

------------------------------------------------------
123            |   cat               |   dog         |   
------------------------------------------------------
456            |   cat               |   rabbit      |   
------------------------------------------------------
789            |   snake             |   dog         |   
------------------------------------------------------

I am now getting more data with different structure, so I can no longer use a csv. Instead I am using JSON file. The JSON file looks something like this

[
  [
    {
      "ID": 123,
      "animal_one": "cat",
      "animal_two": "dog"
    },
    {
      "ID": 456,
      "animal_one": "cat",
      "animal_two": "rabbit"
    },
    {
      "ID": 789,
      "animal_one": "snake",
      "animal_two": "dog"
    }
  ],
  [
    2222
  ],
  [
    12345
  ],
  [
    "2012-01-02"
  ],
  [
    "2012-12-20"
  ]
]

So you can see the additional data. For this part of the application, I only want to work with the first part of the JSON, the part containing animals. The function I have basically works on values only, so I need to make this JSON like the original CSV file, whereby I only have the values, no keys.

So I am loading the JSON file, which is then contained within the variable data

I am then trying something like this

var key = "CUST_ID";
delete data[0][key];
console.log(JSON.stringify(data[0]))

Although this doesnt even work, I think it is the wrong approach anyway. I dont want to define the keys I want removed, I just want it to remove all keys, and keep the values.

How would I go about doing this? I am using data[0] to get the first section of the JSON, the part that contains animals. Not sure if this is correct either?

Thanks

Initially I was working with a CSV, where each row contained data e.g.

------------------------------------------------------
123            |   cat               |   dog         |   
------------------------------------------------------
456            |   cat               |   rabbit      |   
------------------------------------------------------
789            |   snake             |   dog         |   
------------------------------------------------------

I am now getting more data with different structure, so I can no longer use a csv. Instead I am using JSON file. The JSON file looks something like this

[
  [
    {
      "ID": 123,
      "animal_one": "cat",
      "animal_two": "dog"
    },
    {
      "ID": 456,
      "animal_one": "cat",
      "animal_two": "rabbit"
    },
    {
      "ID": 789,
      "animal_one": "snake",
      "animal_two": "dog"
    }
  ],
  [
    2222
  ],
  [
    12345
  ],
  [
    "2012-01-02"
  ],
  [
    "2012-12-20"
  ]
]

So you can see the additional data. For this part of the application, I only want to work with the first part of the JSON, the part containing animals. The function I have basically works on values only, so I need to make this JSON like the original CSV file, whereby I only have the values, no keys.

So I am loading the JSON file, which is then contained within the variable data

I am then trying something like this

var key = "CUST_ID";
delete data[0][key];
console.log(JSON.stringify(data[0]))

Although this doesnt even work, I think it is the wrong approach anyway. I dont want to define the keys I want removed, I just want it to remove all keys, and keep the values.

How would I go about doing this? I am using data[0] to get the first section of the JSON, the part that contains animals. Not sure if this is correct either?

Thanks

Share Improve this question asked Jan 30, 2019 at 18:39 katie hudsonkatie hudson 2,89313 gold badges54 silver badges101 bronze badges 1
  • An array should generally contain values of the same type (unless it represents a tuple, but your outermost value doesn't look like a five-tuple to me). Better use an object and give it descriptive keys. – Bergi Commented Jan 30, 2019 at 18:41
Add a ment  | 

3 Answers 3

Reset to default 3

You can simply do this, if you dont care what keys you are getting:

var collection = "";
data[0].forEach(function(row) {
    var line = [];
    Object.keys(row).forEach(function(key) {
        line.push(row[key])
    });
    collection = collection + line.join(',') + '\n';
})

You will get csv string out of collection

I dont want to define the keys I want removed

You still will need to define which keys you want the values from. One could just take all the values from the object, in arbitrary order, but that's not robust against changes to the data format. Use something like

const table = data[0].map(value => [value.ID, value.animal_one, value.animal_two]);
data[0].forEach(function(row,index) {
   data[0][index] = Object.values(data[0][index]);
});

本文标签: javascriptRemove all keys from JSON objectStack Overflow