问题:如何遍历对象数组和对象的特定于剪裁的属性?
需要更新对象数组,以更新数组内对象的每个属性。
我需要删除每个对象中的空格(trim)accountId和handlerId属性。
这是我尝试的代码示例:
// This is an array of objects
var data = [
{
Company: "Church Mutual",
accountId: "1234567 ", <======= need to trim()
accountName: "Test123",
handlerId: "1111111 ", <======= need to trim()
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
},
{
Company: "Church Mutual",
accountId: "1234567 ",
accountName: "Test123",
handlerId: "1111111 ",
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
}
];
var newData = data.forEach(i => {
data[i].accountId.trim()
})
欢迎任何建议或帮助。
String#trim()
返回更改的值。由于数组成员是对象,因此可以直接修改键,并指定修剪后的值。此外,i
是项目,而不是索引,因此您可以直接访问i
上的属性,而不是data[i]
。请参阅Array#forEach
的文档。
注意:如果您不想更改原始项目,则需要首先对数组进行deep copy,然后将forEach
循环应用于复制的对象。
// This is array of objects
var data = [{
Company: "Church Mutual",
accountId: "1234567 ",
accountName: "Test123",
handlerId: "1111111 ",
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
},
{
Company: "Church Mutual",
accountId: "1234567 ",
accountName: "Test123",
handlerId: "1111111 ",
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
}
];
data.forEach(i => {
i.accountId = i.accountId.trim();
i.handlerId = i.handlerId.trim();
})
console.log(data);
你想使用map
:
var data = [
{
Company: "Church Mutual",
accountId: "1234567 ",
accountName: "Test123",
handlerId: "1111111 ",
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
},
{
Company: "Church Mutual",
accountId: "1234567 ",
accountName: "Test123",
handlerId: "1111111 ",
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
}
];
var newData = data.map(o => {
o.accountId = o.accountId.trim();
o.handlerId = o.handlerId.trim();
return o;
});
console.log(newData);
你可以使用forEach
和Object.entries
var data = [
{
Company: "Church Mutual",
accountId: "1234567 ",
accountName: "Test123",
handlerId: "1111111 ",
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
},
{
Company: "Church Mutual",
accountId: "1234567 ",
accountName: "Test123",
handlerId: "1111111 ",
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
}
];
data.forEach(e => {
Object.entries(e).forEach(([key,value])=>{
e[key] = value.trim()
})
})
console.log(data)
您可以获取所需键的数组以进行修剪并迭代对象和键并分配修剪后的值。
var data = [{ Company: "Church Mutual", accountId: "1234567 ", accountName: "Test123", handlerId: "1111111 ", lineOfBusiness: "WC", selectedState: "NY", tpa: "No" }, { Company: "Church Mutual", accountId: "1234567 ", accountName: "Test123", handlerId: "1111111 ", lineOfBusiness: "WC", selectedState: "NY", tpa: "No" }],
keys = ['accountId', 'handlerId'];
data.forEach(o => keys.forEach(k => o[k] = o[k].trim()));
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以通过将回调函数作为参数传递来使用forEach
方法。
var data = [ { Company: "Church Mutual", accountId: "1234567 ", accountName: "Test123", handlerId: "1111111 ", lineOfBusiness: "WC", selectedState: "NY", tpa: "No", }, { Company: "Church Mutual", accountId: "1234567 ", accountName: "Test123", handlerId: "1111111 ", lineOfBusiness: "WC", selectedState: "NY", tpa: "No", } ];
data.forEach(item => {
Object.keys(item).forEach(key => {
item[key] = item[key].trim()
});
});
console.log(data);
你可以尝试这样的事情:
var data = [{
Company: "Church Mutual",
accountId: "1234567 ",
accountName: "Test123",
handlerId: "1111111 ",
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
},
{
Company: "Church Mutual",
accountId: "1234567 ",
accountName: "Test123",
handlerId: "1111111 ",
lineOfBusiness: "WC",
selectedState: "NY",
tpa: "No",
}
];
const trimmer = (data, fields) => data.map(o => fields.reduce((acc, field) => Object.assign(acc, {[field]: acc[field].trim()}),o))
并像这样使用它:
const newData = trimmer(data, ['accountId', 'handlerId'])