如何以正确的方式更新对象值

时间:2019-06-17 09:25:10

标签: javascript reactjs

我在更新我的pip install <package> --trusted-host pypi.org --trusted-host files.pythonhosted.org --proxy="<IP>:<port>" 值时遇到问题。

我有一个结构如下的对象:

object's

我有一个添加我的对象的按钮, 当我const myObject = { [_selectedDay] : { toDo:'workout', selected: true, } } 我的对象时,我得到了:

console.log

我的问题:是否可以从//I expaned [0] (5) [{…}, {…}, {…}, {…}, {…}] "object" 0: ->2019-06-03: {toDo: "workout", selected: true} 1: {2019-06-04: {…}} 2: {2019-06-05: {…}} 3: {2019-06-06: {…}} 4: {2019-06-07: {…}} 更新2019-06-03的{​​{1}}字段以进行研究?

我尝试了此代码,但无法正常工作。

toDo

3 个答案:

答案 0 :(得分:2)

所以首先我们应该看一下:

(5) [{…}, {…}, {…}, {…}, {…}] "object"
0: 
->2019-06-03: {toDo: "workout", selected: true}
1: {2019-06-04: {…}}
2: {2019-06-05: {…}}
3: {2019-06-06: {…}}
4: {2019-06-07: {…}}

myObject[0].todo未定义,因为.todo上没有myObject[0]。此外,对象中的任何地方都没有.todo。但是在.toDo上有一个myObject[0]['2019-06-03'](用D代替d)。

使用myObject[0]['2019-06-03'].toDo = 'study'应该可以。 :)


题外话:(回答您的评论):

如果不应该更改您的数据结构,这可能是一个解决方案。看一下代码中的注释:

var myObject = [
  {'2019-06-04': {toDo: 'study', selected: true}},
  {'2019-06-05': {toDo: 'workout', selected: true}},
  {'2019-06-06': {toDo: 'party', selected: true}},
  {'2019-06-07': {toDo: 'work', selected: true}}
];

function catchbydate(key) {
  // loop through your array:
  for(var i = 0; i < myObject.length; i++) {
    // return if objectkey was found:
    if(myObject[i].hasOwnProperty(key)) return myObject[i];
  }
  // otherwise return null:
  return null;
}

console.log(catchbydate('2019-06-06'));

答案 1 :(得分:1)

您可以尝试使用第一个键:

var firstKey = Object.keys(myObject)[0];
myObject[firstKey].todo = 'workout'

答案 2 :(得分:1)

要回答您对J Sadi的回答的评论,以某种方式在您的代码中,“ myObject”将转换为对象数组,因此您必须通过索引访问它,例如myObject [0]。如果您的结构如下所示仍然正确,则可以直接访问(或console.log)您的属性,例如myObject ['2019-06-03']。

myObject =  {
      2019-06-03 :
        {
        toDo:'workout',
        selected: true,
      },
      2019-06-04 :
        {
        toDo:'study',
        selected: true,
      }
  }

现在您可以执行console.log(myObject ['2019-06-03'])。