技术解析

Js 怎么将 1 种数组转换为另一种数组?
0
2021-08-20 05:57:00
idczone
请教大佬。

array[0][name]:apple
array[0][price]:55.00
array[0][tips]:red apple
array[1][name]:orange
array[1][price]:41.13
array[1][tips]:4orange

如何转换为:

array[name][0]:apple
array[name][1]:orange
array[price][0]:55.00
array[price][1]:41.13
array[tips][0]:red apple
array[tips][1]:4orange
这。。for-loop 不就好了

```js
const array = [
{
name: 'apple',
price: 55.0,
tips: 'red apple',
},
{
name: 'orange',
price: 41.13,
tips: '4 orange',
}
];
const ret = array.reduce((accmulator, current) => {
Object.entries(current).forEach(([prop, value]) => {
if (!Reflect.has(accmulator, prop)) {
accmulator[prop] = [];
}
accmulator[prop].push(value);
});
return accmulator;
}, {});
console.log(ret);
```

跟差不多
``` javascript
const arr = [
{
name: "name1",
price: "price1",
tips: "tips1",
},
{
name: "name2",
price: "price2",
tips: "tips2",
},
]
const result = arr.reduce((prev, cur, i) => {
Object.entries(cur).forEach(([key, val]) => {
if (!prev[key]) { prev[key] = [...new Array(arr.length)] }
prev[key][i] = val
})
return prev
}, {})
console.log(result)
```

```js
const arr = [{name: 'apple', price: 55.00, tips: 'red apple'}, {name: 'org', price: 52.00, tips: 'red apple'}];
const vx = arr.reduce((ac, item) => {
const keys = Object.keys(item);
keys.map(key => {
const has = ac.hasOwnProperty(key);
if(has) {//{name: 'apple', price: 55.00, tips: 'red apple'}
const maybeArr = ac[key];
const isArr = Array.isArray(maybeArr);
if(isArr) { ac[key].push(item[key])}else {ac[key] = [ac[key], item[key]];}
}else {
ac[key] = [ac[key]];
}
});
return ac;
});
console.log(vx);
```
我这是比较笨拙的写法
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服