我想修剪对象键y_的出现并获得类似useroutput
的输出:
var user =[{"data":"2","y_data1":1},{"data":"4","y_data1":3,"y_data2":3}]
var useroutput=[{"data":"2","data1":1},{"data":"4","data1":3,"data2":3}]
让我知道使用lodash或javascript的任何方法。
答案 0 :(得分:1)
您可以使用lodash#map来变换user
数组中的每个项,并使用lodash#mapKeys来变换user
项的每个键。
const result = _.map(user, data =>
_.mapKeys(data, (v, k) => k.replace(/^y_/, '')));
const user = [
{"data":"2","y_data1":1},
{"data":"4","y_data1":3,"y_data2":3}
];
const result = _.map(user, data =>
_.mapKeys(data, (v, k) => k.replace(/^y_/, '')));
console.log(result);
.as-console-wrapper{min-height:100%;top:0}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
纯JS解决方案:使用Array#map进行项目转换,并结合使用Object.entries()和Array#reduce进行密钥转换。
const result = user.map(data =>
Object.entries(data).reduce(
(r, [k, v]) => (r[k.replace(/^y_/, '')] = v, r),
{}
)
);
const user = [
{"data":"2","y_data1":1},
{"data":"4","y_data1":3,"y_data2":3}
];
const result = user.map(data =>
Object.entries(data).reduce(
(r, [k, v]) => (r[k.replace(/^y_/, '')] = v, r),
{}
)
);
console.log(result);
.as-console-wrapper{min-height: 100%; top: 0}
答案 1 :(得分:0)
您可以使用array.map
,array.reduce
和一个正则表达式来匹配目标密钥,而无需使用破折号来做到这一点:
var user = [{"data":"2","y_1":1},{"data":"4","y_1":3,"y_2":3}];
console.log(user.map(o =>
Object.keys(o).reduce((a, e) => {
a[e.replace(/^y_/, "")] = o[e];
return a;
},
{})));