【问题标题】:How to extract specific value from each element of an array and turn them into an array of object?如何从数组的每个元素中提取特定值并将它们转换为对象数组?
【发布时间】:2023-01-30 19:36:53
【问题描述】:
我想从下面数组的每个元素中提取名称和费率,并将它们变成一个对象数组
[
'BTCUSDT Perpetual\t8h\t05:14:44\t0.0100%\t0.01%\t0.3000% / -0.3000%\t0.3000% / -0.3000%',
'ETHUSDT Perpetual\t8h\t05:14:44\t0.0100%\t0.01%\t0.3750% / -0.3750%\t0.3750% / -0.3750%',
'BCHUSDT Perpetual\t8h\t05:14:44\t-0.0135%\t0.01%\t0.3750% / -0.3750%\t0.3750% / -0.3750%'
]
以下是我希望得到的:
[
{"name":BTCUSDT, "rate":0.01%},
{"name":ETHUSDT,"rate":0.01%},
{"name":BCHUSDT,"rate":0.01%},
]
感谢您的任何建议。
【问题讨论】:
标签:
javascript
arrays
json
object
【解决方案1】:
尝试使用arr.reduce()
const arr = [
'BTCUSDT Perpetual 8h 05:14:44 0.0100% 0.01% 0.3000% / -0.3000% 0.3000% / -0.3000%',
'ETHUSDT Perpetual 8h 05:14:44 0.0100% 0.01% 0.3750% / -0.3750% 0.3750% / -0.3750%',
'BCHUSDT Perpetual 8h 05:14:44 -0.0135% 0.01% 0.3750% / -0.3750% 0.3750% / -0.3750%'
];
const res = arr.reduce((acc, item) => {
debugger;
const splitArr = item.split(' ');
acc.push({
[splitArr[0]]: splitArr[1].split(' ')[4]
});
return acc;
}, [])
console.log(res)
【解决方案2】:
您可以结合使用数组映射和字符串拆分来实现此目的:
const arr = [
'BTCUSDT Perpetual 8h 05:14:44 0.0100% 0.01% 0.3000% / -0.3000% 0.3000% / -0.3000%',
'ETHUSDT Perpetual 8h 05:14:44 0.0100% 0.01% 0.3750% / -0.3750% 0.3750% / -0.3750%',
'BCHUSDT Perpetual 8h 05:14:44 -0.0135% 0.01% 0.3750% / -0.3750% 0.3750% / -0.3750%'
];
const result = arr.map(item => {
const elements = item.split(' ');
const name = elements[0].split(" ")[0];
return {
name,
rate: elements[4]
};
});
console.log(result);
【解决方案3】:
const arr = [
'BTCUSDT Perpetual 8h 05:14:44 0.0100% 0.01% 0.3000% / -0.3000% 0.3000% / -0.3000%',
'ETHUSDT Perpetual 8h 05:14:44 0.0100% 0.01% 0.3750% / -0.3750% 0.3750% / -0.3750%',
'BCHUSDT Perpetual 8h 05:14:44 -0.0135% 0.01% 0.3750% / -0.3750% 0.3750% / -0.3750%'
];
var data = [];
const result = arr.reduce((data, value) => {
const splitArray = value.split(' ');
var params = {
name: splitArray[0],
rate: splitArray[1].split(' ')[4]
}
data.push(params);
return data;
}, [])
const output = result;
console.log(output);