使用属性更新对象属性中的数组

时间:2018-06-05 12:23:41

标签: javascript reactjs

我有一个像这样定义的对象:

import React, { Component } from 'react';
import './App.css';

class App extends Component {

  constructor() {
    super();
    this.state = {
    lists: ["Dogs", "Cats"],
    items: {Dogs:[], Cats:[]}
    };
  }

  handleAddItem(item) {
    console.log(item);
  }

我有变量

console.log(item);// output {Dogs:[{name: "lofi"}]}  

我不知道如何验证itemDogsCats)中的哪个属性,以便我可以更新对象项{}以使其成为我的像这样的例子:

items{Dogs:[{name: "lofi"}], Cats:[]}

2 个答案:

答案 0 :(得分:1)

您可以使用Object.keys方法。

items[Object.keys(item)[0]] = item[Object.keys(item)[0]]

工作解决方案



let state = {
   lists: ["Dogs", "Cats"],
   items: {Dogs:[], Cats:[]}
};

let item = { Dogs:[{name: "lofi"}] };
state.items[Object.keys(item)[0]] = item[Object.keys(item)[0]]
console.log(state.items);




答案 1 :(得分:1)

您可以在Object.assign上使用state.items函数,它将使用第二个参数中给出的属性添加/更新给定对象。

let state = {
   lists: ["Dogs", "Cats"],
   items: { Dogs:[], Cats:[] }
};

let item = { Dogs: [ {name: "lofi"} ] };

Object.assign(state.items, item);

console.log(state);