【问题标题】:combine multiple list to single array将多个列表组合到单个数组
【发布时间】:2019-11-02 08:21:06
【问题描述】:

{ "data": [ {"firstName": "Achmad"}, {"lastName": "a"} ] } 这是我的脚本var body = request.body;for(var i = 0;i < body.data.length;i++){var obj = body.data[i];var keyes = Object.keys(obj);} 来自var keyes = Object.keys(obj); 的问题响应是这样的列表[ 'firstName' ] [ 'lastName' ] 我想要这样['firstName', 'lastName']

之前谢谢。

【问题讨论】:

  • 但是那个“列表”是什么?您能否添加一些示例数据以及您尝试过的不同格式?
  • 你必须初始化和建立你的数组对象。这应该很容易通过一些谷歌搜索来解决。
  • 你应该检查这个方法:Array.concat(Array)
  • 这样的请求正文 { "data": [ {"firstName": "Achmad"}, {"lastName": "a"} ] } 和我的脚本 var body = request.body;for(var i = 0;i < body.data.length;i++){var obj = body.data[i];var keyes = Object.keys(obj);} 来自 var keyes = Object.keys(obj); 的问题响应是这样的列表 [ 'firstName' ] [ 'lastName' ] 我想要这样的 ['firstName', 'lastName']
  • 这太可怕了——你应该花一些精力在你提出问题的方式上。

标签: javascript typescript


【解决方案1】:

已编辑:您可以 concat 数组中的每个项目:

const body = {
  "data": [
    {"firstName": "Achmad"},
    {"lastName": "a"}
  ]
};

let result = [];
for (item of body.data) {
  result = result.concat(Object.keys(item));
}

console.log(result); // -> ['firstName', 'lastName']

【讨论】:

  • 这样的请求正文 { "data": [ {"firstName": "Achmad"}, {"lastName": "a"} ] } 和我的脚本 var body = request.body;for(var i = 0;i < body.data.length;i++){var obj = body.data[i];var keyes = Object.keys(obj);} 来自 var keyes = Object.keys(obj); 的问题响应是这样的列表 [ 'firstName' ] [ 'lastName' ] 我想要这样的 ['firstName', 'lastName']
【解决方案2】:

也许你想做这样的事情

var body = request.body;
var keyes = [];
for(var i = 0; i < body.data.length; i++){
    var obj = body.data[i];
    keyes.push( Object.keys(obj) );
}

【讨论】:

  • 这样的请求正文{ "data": [ {"firstName": "Achmad"}, {"lastName": "a"} ] } 和我的脚本var body = request.body;for(var i = 0;i &lt; body.data.length;i++){var obj = body.data[i];var keyes = Object.keys(obj);} 来自var keyes = Object.keys(obj); 的问题响应是这样的列表[ 'firstName' ] [ 'lastName' ] 我想要这样['firstName', 'lastName']
  • 将keys变量定义为循环外的数组,循环内将数据推入其中。
  • 你能举个例子吗?
  • 在我更正了你的答案代码后,我得到了[ [ 'firstName' ] ] [ [ 'firstName' ], [ 'lastName' ] ] 为什么不是[ [ 'firstName' ], [ 'lastName' ] ]?
  • @Ahmed 因为 OP 的代码不能满足您的要求。使用 Array.prototype.concat 或 es2018 使用 Array.prototype.flatten。 OP 在编辑后成功地使他们的代码更多错误
【解决方案3】:

假设每个数组都是父数组的元素,实现此目的的一种方法是使用Array.prototype.reduce:

const flat = [
  ["aku"],
  ["dia"],
  ["ia"]
].reduce((accum, el) => accum.concat(el), [])

console.log(flat);

【讨论】:

  • 这样的请求正文{ "data": [ {"firstName": "Achmad"}, {"lastName": "a"} ] } 和我的脚本var body = request.body;for(var i = 0;i &lt; body.data.length;i++){var obj = body.data[i];var keyes = Object.keys(obj);} 来自`var keyes = Object.keys(obj);` 的问题响应是这样的列表[ 'firstName' ] [ 'lastName' ] 我想要像这样['firstName', 'lastName']
  • @AlmostHandsome 哎呀,你是对的。更新了代码。
  • @Ahmed - 您绝对想编辑您的问题,而不是在随机评论中发布重要细节。
猜你喜欢
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2016-12-11
  • 2019-12-19
相关资源
最近更新 更多