【问题标题】:Updating an existing object Array in ES6 javascript在 ES6 javascript 中更新现有对象数组
【发布时间】:2017-09-19 00:40:48
【问题描述】:

我是 ES6 JavaScript 的新手。我正在寻找一种场景,我可以更新来自 Web 服务的对象数组并将数据格式传递给表。

我正在使用 ReactJS 'rc-table'。

https://www.npmjs.com/package/rc-table

要以 rc-table 格式显示我们的数据,我们需要在来自后端的数据中有一个属性键:“somevalue”。

我的数据格式如下:

{
 {
   Name:'Robert',
   City: 'Barcelona'
 },
 {
   Name: 'Marguaritte',
  City: 'Baltimore'

 }
}

现在它将以 rc-table 格式显示,仅当对象具有唯一键属性时。

例如:

 {
 {
  Name:'Robert',
  City: 'Barcelona',
   Key:1
 },
 {
  Name: 'Marguaritte',
  City: 'Baltimore',
  Key:2

  }
 }

我正在寻找使用“key:1”和“key:2”更新我的对象 附上我的代码。任何帮助将不胜感激。

【问题讨论】:

  • 有点混乱。你能告诉我们你需要的预期输出吗?
  • 在 ES6 中没有任何东西可以让这更容易。你可以使用之前在 ES5 中使用过的任何解决方案。

标签: javascript arrays json object ecmascript-6


【解决方案1】:

我认为你想做这样的事情。正如您所建议的,我假设您的数据是一个对象数组,而不是一个没有键的对象。

const data = data.map((el, index) => {
    el.Key = index;
    return el;
});

【讨论】:

  • 你还需要返回el,否则就是undefined的数组,不是吗?
  • 其实index 是从0 开始的,所以我们需要使用ìndex+1,这会一直把indefined 推到结果数组中。
  • 是的,需要返回el。已编辑。索引确实从 0 开始。我假设 0 是 rc-table 的有效键。
【解决方案2】:

您的实际数组格式不正确,您应该将包装 {} 替换为 [] 以便它是有效的数组。

无论如何你应该使用Array.prototype.map(),它会使用一个回调函数返回一个自定义数组,该回调函数会将key属性添加到每个迭代项。

这就是你应该如何编写代码:

var data = arr.map(function(item, index) {
  item.key = index + 1;
  return item;
});

ES6 解决方案:

按照 Chester Millisock 在 cmets 中的建议使用 ES6 arrow functions

var data = arr.map((item, index) => {
   item.key = index + 1;
   return item;
}); 

演示:

var arr = [{
    Name: 'Robert',
    City: 'Barcelona'
  },
  {
    Name: 'Marguaritte',
    City: 'Baltimore'

  }
];

var data = arr.map((item, index) => {
   item.key = index + 1;
   return item;
}); 

console.log(data);

【讨论】:

  • 既然 OP 说他/她是 ES6 的新手,我建议 OP 学习为此使用箭头函数(见下文)。
猜你喜欢
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
相关资源
最近更新 更多