将对象数组转换为二维数组

3

我该如何转换这个对象数组

var tags= [
  {id: 0, name: "tag1", project: "p1", bu: "test"},
  {id: 1, name: "tag2", project: "p1", bu: "test"},
  {id: 2, name: "tag3", project: "p3", bu: "test"}
];

将数据存储到这个二维数组中:

[["tag1","p1", "test"],
["tag2","p1", "test"],
["tag3","p3", "test"]]

1
简单的 array.map https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map - epascarello
3个回答

5

你可以使用 map

var tags= [ {id: 0, name: "tag1", project: "p1", bu: "test"}, {id: 1, name: "tag2", project: "p1", bu: "test"}, {id: 2, name: "tag3", project: "p3", bu: "test"} ];
var res=tags.map(o=>[o.name,o.project,o.bu])
console.log(res)

您也可以使用更通用的方法

var tags= [ {id: 0, name: "tag1", project: "p1", bu: "test"}, {id: 1, name: "tag2", project: "p1", bu: "test"}, {id: 2, name: "tag3", project: "p3", bu: "test"} ];
var res = tags.map(({id,...rest}) => Object.values(rest))
console.log(res)


我遇到了一个错误:tags.map不是一个函数。这个对象数组是从API调用中检索出来的,并且以我在上面发布的确切格式呈现。如果它不是对象数组,那么它只是一个对象吗? - Omi in a hellcat
1
@Omiinahellcat 是的,在那种情况下,很可能是一个对象而不是数组对象。 - Sven.hig

2

Array.map方法可以帮助你。

https://www.geeksforgeeks.org/javascript-array-map-method/

var tags= [
  {id: 0, name: "tag1", project: "p1", bu: "test"},
  {id: 1, name: "tag2", project: "p1", bu: "test"},
  {id: 2, name: "tag3", project: "p3", bu: "test"}
];
          
   var newArr = tags.map(function(val, index){ 
            return [val.name,val.project,val.bu]
   }) 
          
   console.log(newArr) 


2

如果您想保留所有属性,可以使用

let twoDArray = tags.map(tag => Object.values(tag))

// [[0, "tag1", "p1", "test"], [1, "tag2", "p1", "test"], [2, "tag3", "p3", "test"]]

...或者甚至是tags.map(Object.values)。但无论哪种情况,您都必须确保所有对象的属性顺序相同。 - Scott Sauyet
请添加运行代码片段。@khrzstoper - Avinash Dalvi
.map(({id,...rest}) => Object.values(rest)) 更接近于 OP 所需求的。 - Yevhen Horbunkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接