javascript:修剪对象的所有属性

javascript:修剪对象的所有属性,javascript,ecmascript-6,Javascript,Ecmascript 6,有没有办法修剪对象的所有属性?换言之,我能否改变这一点: {a: ' a', b: 'b ', c: ' c '} 为此: {a: 'a', b: 'b', c: 'c'} 似乎我无法映射对象,那么如何将函数应用于所有属性并将对象取回?您可以通过循环来实现这一点 for(var key in myObject) { myObject[key] = myObject[key].trim(); } 您可以使用use reduce创建具有所需值的对象: const test={a:'a

有没有办法修剪对象的所有属性?换言之,我能否改变这一点:

{a: ' a', b: 'b ', c: ' c '}
为此:

{a: 'a', b: 'b', c: 'c'}

似乎我无法映射对象,那么如何将函数应用于所有属性并将对象取回?

您可以通过循环来实现这一点

for(var key in myObject) {
    myObject[key] = myObject[key].trim();
}

您可以使用use reduce创建具有所需值的对象:

const test={a:'a',b:'b',c:'c'}
const trimAllValues=input=>Object.keys(输入)
.减少((上一个,下一个)=>
对象。分配(上一个{
[下一步]:测试[下一步]。替换(/\s+/g',)
}), {});
常量结果=trimAllValues(测试)
console.log(result)
您可以使用迭代对象属性并更新其值:

Object.keys(obj).map(k => obj[k] = obj[k].trim());
演示:

var obj={
a:‘a’,
b:‘b’,
c:‘c’
};
Object.keys(obj.map)(k=>obj[k]=obj[k].trim());

控制台日志(obj)
您可以使用
Object.keys
来减少和修剪值,其外观如下:

函数TrimObj值(obj){
返回Object.keys(obj).reduce((acc,curr)=>{
acc[curr]=obj[curr].trim()
返回acc;
}, {});
}
常数ex={a:a',b:b',c:c'};

console.log(trimObjValues(ex))虽然这不能回答提出的确切、狭窄的问题;我想说的是,根据上面发布的答案,应该很容易找到解决方案。它也需要深度吗?认为这可能是映射深度对象的最接近的东西
JSON.stringify(obj,(k,v)=>typeof v==='string'?v.trim():v)
forEach
map
@photo更可取为什么会这样
.map
就是为这些事情而设计的。因为
map
用于返回一个新的转换数组。在这里,我们只需要循环并修改
obj
。如果对象包含对象,则这不起作用attributes@pymarco我观察到.map比.forEach快,如果我错了,请纠正我。我认为您需要注意这一点,因为
for…in
将沿着原型链向上遍历所有这些属性
const object1 = {
  a: ' somestring',
  b: ' a',
  c: 'a '
};

const newVals = Object.values(object1).map(val => val.trim());
console.log(newVals); //["somestring", "a", "a"]