繁体   English   中英

如何修剪对象值并返回新对象?

[英]How to trim the object value and returned with new object?

我想从对象中修剪值,但不起作用。

var obj = {'name' : 'arif', 'city':'chennai'};

var y = Object.keys(obj).reduce(function (obj, key) {
    return obj[key] = String(obj[key]).trim();
}, {});

console.log(y); //undefined

有人帮我吗?

您需要在每个回调的底部return用于下一次迭代的累加器,还应为要创建的对象和原始obj使用不同的变量名,以便可以分别引用这两个变量:

 var obj = {'name' : 'arif ', 'city':'chennai'}; var newObj = Object.keys(obj).reduce(function (newObj, key) { newObj[key] = obj[key].trim(); return newObj; }, {}); console.log(newObj); 

另一个选择是使用Object.fromEntries ,它看起来比IMO更干净(非常现代的环境或需要polyfill):

 var obj = {'name' : 'arif ', 'city':'chennai'}; var newObj = Object.fromEntries( Object.entries(obj) .map(([key, val]) => [key, val.trim()]) ); console.log(newObj); 

您可以使用Object.keys()方法来迭代对象属性并更新其值:

 var obj = {'name' : 'arif ', 'city':' chennai'}; Object.keys(obj).forEach(k => obj[k] = obj[k].trim()); console.log(obj); 

您可以使用以下方式:

var obj = {'name' : 'arif', 'city':'chennai'};
var y=Object.keys(obj).reduce((acc, curr) => {
acc[curr] = obj[curr].trim()
return acc;}, {});

当前,传递obj来减少函数,它需要累加器,因此会引起问题。 如果这对您不起作用,请恢复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM