如何在二维数组中推送JSON数据?

时间:2019-01-05 13:54:34

标签: javascript arrays reactjs react-native

我正在尝试获得类似的结构

var tableData= [
  ['Hfbj'],
  ['Hygh'],
  [6],
  ['mayur'],
  [2563458952]
]

这是我的JSON数据:

data:{
  "address"': "Hfbj"
  "id": 6
  "landmark": "Hygh"
  "name": "mayur"
  "phone": 2563458952
  "title": "aaa"
}

我正在使用react-native-table-component,其中需要这种类型的结构。为此,我正在执行以下操作,但它显示了data.map is not function and undefined

let newdata = this.state.tableData[0].push(
  [responseJson.data.title],
  [responseJson.data.title]
);

this.setState({
  tableData: newdata
});

我该如何实现?

2 个答案:

答案 0 :(得分:1)

.map用于数组,而您的responseJson.data是对象。要将该对象转换为其值的数组,可以执行Object.values(responseJson.data)

答案 1 :(得分:1)

您可以使用Object.valuesArray.map

var reponseJson = {
  data: {
    "address": "Hfbj",
    "id": 6,
    "landmark": "Hygh",
    "name": "mayur",
    "phone": 2563458952,
    "title": "aaa"
  }
};

var newData = Object.values(reponseJson.data)
  .map(item => [item]);

console.log(newData);

请注意,我使用responseJson名称来匹配您的问题,但是正如@Andreas指出的那样,这是一个对象,而不是JSON。

如果只需要某些列(如下面的注释所要求),请在重建数组之前对它们使用Object.keysArray.filter

var reponseJson = {
  data: {
    "address": "Hfbj",
    "id": 6,
    "landmark": "Hygh",
    "name": "mayur",
    "phone": 2563458952,
    "title": "aaa"
  }
};

var keysToKeep = ['address', 'landmark', 'title'];

var newData = Object.keys(reponseJson.data)
  .filter(key => keysToKeep.includes(key))
  .map(key => [reponseJson.data[key]]);

console.log(newData);