Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象数组转换为对象数组';价值观_Javascript_Arrays_Object_Javascript Objects - Fatal编程技术网

Javascript 将对象数组转换为对象数组';价值观

Javascript 将对象数组转换为对象数组';价值观,javascript,arrays,object,javascript-objects,Javascript,Arrays,Object,Javascript Objects,我正在尝试转换此数组 let orders = [ { amount: '100', user: 'admin', date: 'March 6, 2019' }, { amount: '120', user: 'admin', date: 'March 6, 2019' }, { amount: '80', user: 'admin', date: 'March 7, 2019' }, { amount: '200', user: 'admin', date: 'Mar

我正在尝试转换此数组

let orders = [
  {  amount: '100', user: 'admin', date: 'March 6, 2019' },
  {  amount: '120', user: 'admin', date: 'March 6, 2019' },
  {  amount: '80', user: 'admin', date: 'March 7, 2019' },
  {  amount: '200', user: 'admin', date: 'March 7, 2019' },
];
像这样的事情

orders = [
  ['100', 'admin', 'March 6, 2019'],
  ['120', 'admin', 'March 6, 2019'],
  ['80', 'admin', 'March 7, 2019'],
  ['200', 'admin', 'March 7, 2019'],
];
我已经读到
Objects.values()
返回数组中的值,所以我尝试通过使用
forEach()
并在数组中的每个项上使用
Object.values
来迭代
order
数组

let newOrders = orders.forEach(order => {
  return Object.values(order);
});

我不知道我所做的是否正确,而且我对Javascript还是新手。请帮助我。

使用
解构
如果输出中需要(对象的)属性排序,则使用此选项

let orders=[
{金额:'100',用户:'admin',日期:'2019年3月6日'},
{金额:'120',用户:'admin',日期:'2019年3月6日'},
{金额:'80',用户:'admin',日期:'2019年3月7日'},
{金额:'200',用户:'admin',日期:'2019年3月7日'},
];

控制台。log(Orth.map(({金额,用户,日期})= > [金额,用户,日期])< /代码> 作为返回数组中的值的顺序不能保证,您应该考虑使用一些。然后,您可以在单独的变量中提取对象属性,并以所需的顺序显式返回它们

const数据=[
{金额:'100',用户:'admin',日期:'2019年3月6日'},
{金额:'120',用户:'admin',日期:'2019年3月6日'},
{金额:'80',用户:'admin',日期:'2019年3月7日'},
{金额:'200',用户:'admin',日期:'2019年3月7日'}
];
const result=data.map({amount,user,date})=>[amount,user,date]);
控制台日志(结果)
。作为控制台包装{max height:100%!important;top:0;}
您可以尝试以下方法:

orders.map((order) => Object.values(order));

map
将返回一个新数组,而
forEach
只需对数组的每个元素进行回调

只需使用
orders.map(Object.values)

let orders=[
{金额:'100',用户:'admin',日期:'2019年3月6日'},
{金额:'120',用户:'admin',日期:'2019年3月6日'},
{金额:'80',用户:'admin',日期:'2019年3月7日'},
{金额:'200',用户:'admin',日期:'2019年3月7日'},
];
const result=orders.map(Object.values);

console.log(result)
不保证枚举对象属性的顺序()。最简单的解决方案是按所需顺序显式指定键:

let result = orders.map(order => [order.amount, order.user, order.date]);

这是一个更健壮的解决方案,如果您有许多具有不同顺序/键的类似于
struct
的对象的实例,那么它将非常有用。函数方法,
propsToArray
将一系列键作为单独的参数,并返回一个函数,该函数对对象执行所需的转换

let orders=[
{金额:'100',用户:'admin',日期:'2019年3月6日'},
{金额:'120',用户:'admin',日期:'2019年3月6日'},
{金额:'80',用户:'admin',日期:'2019年3月7日'},
{金额:'200',用户:'admin',日期:'2019年3月7日'},
];
//选择1
让propsToArray=函数(…键){
返回函数(obj){
返回keys.map(key=>obj[key]);
}
};
//选择2
//propsToArray=(…keys)=>(obj)=>keys.map(key=>obj[key]);
//结果函数
让orderToArray=propsToArray(“金额”、“用户”、“日期”);
console.log(orders.map(orderToArray))
let orders=[
{金额:'100',用户:'admin',日期:'2019年3月6日'},
{金额:'120',用户:'admin',日期:'2019年3月6日'},
{金额:'80',用户:'admin',日期:'2019年3月7日'},
{金额:'200',用户:'admin',日期:'2019年3月7日'},
];
const result=orders.map(Object.values);
console.log(结果)
let orders=[{
金额:'100',
用户:“admin”,
日期:2019年3月6日
},
{
金额:'120',
用户:“admin”,
日期:2019年3月6日
},
{
金额:'80',
用户:“admin”,
日期:2019年3月7日
},
{
金额:'200',
用户:“admin”,
日期:2019年3月7日
},
];
让数组=[]//初始化数组
orders.forEach((element)=>{//使用数组函数进行回调
对于(元素中的var j){//循环遍历数组的每个元素
array.push(元素[j]);//推送订单中存在的对象的每个值
}
});

console.log(数组)//数组已经准备好了
更简单的
orders.map(Object.values)
它是相关的,因为它意味着您的代码可以为一个订单返回
['100',admin',2019年3月6']
,为另一个订单返回
['admin',80',2019年3月7']
。规范不需要该订单,但显然所有主要的浏览器都遵循这个顺序。@JollyJoker-False。我似乎记得chrome有一些问题,特别是当它涉及到有数字键的对象时。它的订单号是11111245,13,而不是1111245。@I.Am.A.Guy这是规范中的订单。请参见避免
forEach
@Bergi为什么要避免forEach?@reggaeguitar,你可以绊倒你(就像这里发生的那样),并向初学者推荐它。在你的
Object destructuring
链接中似乎没有提到,但顺序是保留的,因为变量名是相关的,并且应该与属性名匹配
const result=data.map({date,amount,user})=>[amount,user,date])也可以正常工作。这有助于我理解。