将没有键的值推送到javascript数组

时间:2019-02-26 15:01:29

标签: javascript arrays key-value

在react-native中,我试图将下面的代码中的值推到没有键的数组中,因为我正在使用的组件(react-native-table-component)将只接受字符串或数字数组,并且不是具有键值对的对象。我非常想找出答案,但是我被卡住了!

response.data的结构

response.data = {
  "Hours": 234,
  "Minutes": 343,
  "Days": 23,
  "Months": 4
}

代码以接收response.data并推送到数组

  toScreenTwo = async () => {
    const { isLoggedIn, user} = this.state;
    try {
      if (!isLoggedIn) {                 
        const response = await http.post('/v1/signup/user', {
          user,
        })
        for (var value in response.data) {
          this.state.tableData2.push(value);
        }
        console.log('response', this.state.tableData2);
      }



      await this.setState({
        modalVisible: false,
        friendsModalVisible: false
      });
    } catch(err) {
      console.log("error ", err);
    }
}

当前代码结果

上面的代码,当我只想将值推入数组tableData2时,当前仅将键推入数组tableData2

react-native-table-component接受的数组格式

 tableData: [
        ['1', '2', '3'],
        ['a', 'b', 'c'],
        ['1', '2', '3'],
        ['a', 'b', 'c']
      ]

react-native-table-component似乎需要传递一个数组,且其中至少嵌套有一个数组

错误

Error Message

如果有人有什么好建议!

1 个答案:

答案 0 :(得分:2)

假设此response.data是一个包含如下数据的对象:

{
    key: 1,
    key2, "Ele", and so on.
}

您可以使用函数Objec.values获取值[1, "Ele"]的数组,并使用函数apply将这些值作为参数传递给函数push

let values = Object.values(response.data);
Array.prototype.push.apply(this.state.tableData2, values);

此代码段稍微解释了功能applyObject.values的工作原理。

let myObj = {
  "Hours": 234,
  "Minutes": 343,
  "Days": 23,
  "Months": 4
};

let array = [];
let values = Object.values(myObj);
Array.prototype.push.apply(array, values);
console.log(array);

更简单的是,如果可以覆盖属性Object.values,只需分配this.state.tableData2的结果即可。

this.state.tableData2 = Object.values(response.data);