有没有办法修剪对象的所有属性?换句话说,我可以更改它吗:
{a: ' a', b: 'b ', c: ' c '}
对此:
{a: 'a', b: 'b', c: 'c'}
似乎我无法映射对象,那么如何将函数应用于所有属性以获取对象呢?
答案 0 :(得分:4)
您可以使用 Object.keys()
method 来迭代对象属性并更新其值:
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());
console.log(obj);
答案 1 :(得分:2)
您可以使用Object.keys
来缩小和修整值,看起来像这样:
function trimObjValues(obj) {
return Object.keys(obj).reduce((acc, curr) => {
acc[curr] = obj[curr].trim()
return acc;
}, {});
}
const ex = {a: ' a', b: ' b', c: ' c'};
console.log(trimObjValues(ex));
答案 2 :(得分:0)
您可以通过遍历它来做到这一点。
for(var key in myObject) {
myObject[key] = myObject[key].trim();
}
答案 3 :(得分:0)
您可以使用use reduce来创建具有所需值的对象:
const test = {a: ' a', b: 'b ', c: ' c '}
const trimAllValues = input => Object.keys(input)
.reduce((prev, next) =>
Object.assign(prev, {
[next]: test[next].replace(/\s+/g, '')
}), {});
const result = trimAllValues(test)
console.log(result)
Lodash的mapValues的性能更高,并且对浏览器的支持也更好。您可以使用lodash,也可以使用have a look at their source并实现相同的方法:
function mapValue(object, iteratee) {
object = Object(object)
const result = {}
Object.keys(object).forEach((key) => {
result[key] = iteratee(object[key], key, object)
})
return result
}
答案 4 :(得分:0)
const object1 = {
a: ' somestring',
b: ' a',
c: 'a '
};
const newVals = Object.values(object1).map(val => val.trim());
console.log(newVals); //["somestring", "a", "a"]