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



我正在修剪对象的值,但不起作用。

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

有人在这里帮我吗?

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

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

你需要在每个回调的底部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(非常现代的环境或需要填充物):

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

最新更新