如何在javascript中从内部JSON数组创建具有一些属性的数组

Posted

技术标签:

【中文标题】如何在javascript中从内部JSON数组创建具有一些属性的数组【英文标题】:How to create an array with some properties from an inner JSON array in javascript 【发布时间】:2021-09-26 20:36:39 【问题描述】:

所以我有:

list = 
    
      id: 1,
      arr: [
        index : 1 , description: "lol" , author: "Arthur",
        index : 2 , description: "sdadsa" , author: "Bob",
        index : 3 , description: "loasd" , author: "Mackenzie"
      ]
    

我想创建一个仅包含 arr 数组中的描述和作者属性的数组。

我试过var a = l : list.arr.map(x => x.description,x.author)。但是数组中的所有项目都是未定义的。

【问题讨论】:

你的list 中的arr 不是数组,你确定这里没有错字吗? 谢谢,我编辑了这个问题。这是我正在尝试做的简化版本。 您还有问题吗? @radurbalau 不,我想通了!谢谢大家! 【参考方案1】:

您只是忘记在返回对象中定义键。

var list = 
  id: 1,
  arr: [
     index: 1, description: "lol", author: "Arthur" ,
     index: 2, description: "sdadsa", author: "Bob" ,
     index: 3, description: "loasd", author: "Mackenzie" ,
  ],
;

var a = l.arr.map(x => (
  description: x.description,
  author: x.author,
));

【讨论】:

【参考方案2】:

另一种方法是使用rest parameter。这样您就可以删除索引并保持其他所有内容不变。

var list = 
  id: 1,
  arr: [
     index: 1, description: "lol", author: "Arthur" ,
     index: 2, description: "sdadsa", author: "Bob" ,
     index: 3, description: "loasd", author: "Mackenzie" ,
  ],
;

var a = list.arr.map((index, ...rest) => rest);

console.log(a);

【讨论】:

哇,太棒了!惊人的想法!【参考方案3】:

list = 
  id: 1,
  arr: [
      index: 1,
      description: "lol",
      author: "Arthur"
    ,
    
      index: 2,
      description: "sdadsa",
      author: "Bob"
    ,
    
      index: 3,
      description: "loasd",
      author: "Mackenzie"
    
  ]


var a = 
  l: list.arr.map(x => (
    "description": x.description,
    "author": x.author
  ))

console.log(a);

【讨论】:

【参考方案4】:

你差不多完成了,你应该在 map 函数的返回对象中定义键。

var list = 
  id: 1,
  arr: [
     index: 1, description: "lol", author: "Arthur" ,
     index: 2, description: "sdadsa", author: "Bob" ,
     index: 3, description: "loasd", author: "Mackenzie" ,
  ],
;

var a = list.arr.map(x => (
  description: x.description,
  author: x.author,
));

console.log(a);

【讨论】:

所以错误是当我返回地图时我没有将 () 包裹到对象上? @radurbalau,是的。此外,您还应该定义对象的键。

以上是关于如何在javascript中从内部JSON数组创建具有一些属性的数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中从json文件中读取数据

如何在 Javascript 中从 Spring 获取 JSON 响应

在 JavaScript 中从 1..20 创建整数数组的最简单方法

如何在 $.ajax 响应中从 JSON 中提取数组

在jQuery中从数组创建html表

如何在javascript中从多个数组中获取单个数组[重复]