javascript - 遍历数组中的对象并根据现有属性的正则表达式匹配添加新属性
问题描述
我是 Javascript 新手,希望能得到一些帮助。
我有以下对象数组:
var data = [{
name: 'name1',
street: 'street2',
person: 'person1',
phone1: 'phone82 ',
phone2: 'phone3'
},
{
name: 'name2',
street: 'street2',
person: 'person1',
phone1: 'phone1 ',
phone2: 'phone2'
}]
我的目标是遍历每个对象,并通过获取每个现有属性值动态分配新属性值,并根据匹配现有属性值的正则表达式分配新属性以生成新属性值。
为此,我尝试创建以下代码,遍历每个对象,将 Regex 表达式声明为变量,然后将每个对象属性与正则表达式匹配,然后使用 map 函数添加一个条目。
代码似乎遍历每个对象,但是当我尝试动态映射每个属性时,它只匹配属性的最后一个值。
for (var j = 0; j < data.length; j++){
var parseaddress = new RegExp(/(.*)/);
var street1 = data[j].street.match(parseaddress)[0]
var parsecity = new RegExp(/(.*)/)
var city = data[j].street.match(parsecity)[0]
var parsepostal = new RegExp(/(.*)/)
var postal = data[j].street.match(parsepostal)
data.map(function(entry) {
entry.address = street1
});
data.map(function(entry) {
entry.city = city
});
data.map(function(entry) {
entry.postalcode = postal
});
}
如果我登录data[j].street
,我会在每个对象中收到所有带有关键街道的值,但是当我将正则表达式分配给每个街道属性并对其进行映射时,它只会将最后一个对象街道值与所有其他对象匹配。
如何根据现有属性的正则表达式匹配动态地将所有值分配给新属性?
解决方案
您可以使用现有的循环,map
在循环内使用会导致您覆盖以前的值
var data = [{ name: 'name1', street: 'street1', person: 'person1', phone1: 'phone82 ', phone2: 'phone3' }, { name: 'name2', street: 'street2', person: 'person1', phone1: 'phone1 ', phone2: 'phone2' }]
for (var j = 0; j < data.length; j++){
var parseaddress = new RegExp(/(.*)/g);
var street1 = data[j].street.match(parseaddress)[0]
var parsecity = new RegExp(/(.*)/g)
var city = data[j].street.match(parsecity)[0]
var parsepostal = new RegExp(/(.*)/g)
var postal = data[j].street.match(parsepostal)[0]
data[j].address = street1
data[j].city = city
data[j].postalcode = postal
}
console.log(data)
推荐阅读
- cmake - 启用 CMake 的任何更新?
- ldap - 如何返回嵌套组中的所有用户?
- c# - 如何从其他位置在 Razor 页面中添加模型
- ssl - 具有不同组织的相同通配符 SSL 证书
- python - 如何在小提琴图中复制 kdeplot 的阴影?
- react-native - Mathjax 离线反应原生
- angular - angular 6 组件属性使用
- python - 使用 pandas 迭代数据框中的某些元素时填充新行
- macos - Logstash 6.7.0 无法在 macOS Mojave (10.14.4) 上启动并出现错误“错误:权限被拒绝 - 权限被拒绝”
- python - 在 Shopee 电子商务网站上获取产品名称的工作相对 xpath