将键值对JavaScript对象转换为数组格式。

3

我正在尝试访问以下格式中可用的JavaScript对象:

[
  {'To':'A','From':'X','Weight':5},
  {'To':'A','From':'Y','Weight':7},
  {'To':'A','From':'Z','Weight':6},
  {'To':'B','From':'X','Weight':2},
  {'To':'B','From':'Y','Weight':9},
  {'To':'B','From':'Z','Weight':4}
]

我应该如何访问上述对象以创建以下数组?
[
  [ 'A', 'X', 5 ],
  [ 'A', 'Y', 7 ],
  [ 'A', 'Z', 6 ],
  [ 'B', 'X', 2 ],
  [ 'B', 'Y', 9 ],
  [ 'B', 'Z', 4 ]
]

这个回答解决了你的问题吗?将对象数组转换为数组数组 - Ivar
5个回答

4
你可以。
  • Use Array.map() and Object.values():

    const arrOfArrs = arr.map( Object.values );
    
  • Use Lodash's _.map() and _.values() in the same manner:

    const _ = require('lodash');
    . . .
    const arrOfArrs = _.map( arr , _.values );
    
    

然而,您应该知道,在 Ecmascript/Javascript 标准中,并没有以任何方式保证对象属性被遍历的顺序(因此返回的顺序)。这可能会因Javascript实现而异,并且甚至可以在执行期间发生更改。最常见的返回顺序是插入顺序,但并不保证。


4

你可以使用数组方法.map()

let arr = [
  {'To':'A','From':'Y','Weight':7},
  {'To':'A','From':'Z','Weight':6}
]

let result = arr.map(Object.values)

console.log(result)


谢谢您的回答。然而,我看到的错误是 - 属性“map”在类型Promise<any>上不存在。 - TechQ
您提供的数据是一个“数组”,而不是一个“承诺”。 - norbekoff

4
使用map函数:

const l = [
  {'To':'A','From':'X','Weight':5},
  {'To':'A','From':'Y','Weight':7},
  {'To':'A','From':'Z','Weight':6},
  {'To':'B','From':'X','Weight':2},
  {'To':'B','From':'Y','Weight':9},
  {'To':'B','From':'Z','Weight':4}
]

const newArray = l.map(el => [el.To, el.From, el.Weight])
console.log(newArray);


2
let a = [{'To':'A','From':'X','Weight':5},{'To':'A','From':'Y','Weight':7},{'To':'A','From':'Z','Weight':6},{'To':'B','From':'X','Weight':2},{'To':'B','From':'Y','Weight':9},{'To':'B','From':'Z','Weight':4}]
let array = []

for(i in a){
    let temp = [a[i]['To'], a[i]['From'], a[i]['Weight']]
    array.push(temp)
}

console.log(array)

1
这可能不是最好的答案,但看起来还可以工作。 - wingman Frankie

1
您可以使用这个来确保内部数组中项目的正确顺序。

let arr = [{'To':'A','From':'X','Weight':5},{'To':'A','From':'Y','Weight':7},{'To':'A','From':'Z','Weight':6},{'To':'B','From':'X','Weight':2},{'To':'B','From':'Y','Weight':9},{'To':'B','From':'Z','Weight':4}]

let result = arr.map(obj => [obj.To, obj.From, obj.Weight]);
console.log(result);


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