我正在尝试访问java脚本对象,该对象有以下格式:
[
{'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 ]
]
您可以
-
使用
Array.map()
和Object.values()
:const arrOfArrs = arr.map( Object.values );
-
以相同的方式使用Lodash的_.map((和_.values((:
const _ = require('lodash'); . . . const arrOfArrs = _.map( arr , _.values );
但是,您应该注意,对象属性的迭代(因此返回(顺序是,而不是以任何方式受到Ecmascript/Javascript标准的保证。它可能因Javascript实现而异,甚至可能因执行而异。返回事物的最常见顺序是插入顺序,但这并不能保证。
使用映射函数:
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);
好吧,你可以使用数组方法.map()
let arr = [
{'To':'A','From':'Y','Weight':7},
{'To':'A','From':'Z','Weight':6}
]
let result = arr.map(Object.values)
console.log(result)
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)
您可以使用它来确保内部数组中项的正确顺序。
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);