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"]