javascript - Remove all keys from JSON object - Stack Overflow

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

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]);
});

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744771986a4592813.html

相关推荐

  • javascript - Remove all keys from JSON object - Stack Overflow

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

    5小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信