lodash:仅深度复制数组中的几个属性
lodash: deep copy only few properties from an array
我有一个具有以下属性的数组
data = [ { 'id' : 1,
'name': 'xyz',
'age': 21,
'gender': 'M',
'address': '123 xyz'},
{ 'id' : 2,
'name': 'abc',
'age': 23,
'gender': 'F',
'address': '456 abc'}
]
我正在尝试构建一个只有少数属性的新数组,并像这样更新 属性(地址)
data1= [ { 'id' : 1,
'name': 'xyz',
'address1': '123 xyz'},
{ 'id' : 2,
'name': 'abc',
'address1': '456 abc'}
]
我尝试使用映射和删除函数。
但想看看是否有一种简单的方法可以做到这一点。我尝试使用一些 lodash 函数的组合但没有成功。
let data1 = data.map(d => {
return {'id' : d.id, 'name': d.name, 'address1': d.address}
})
一个简单的地图就够了,不需要任何库
只使用 map
function 怎么样?
var data = [{
'id': 1,
'name': 'xyz',
'age': 21,
'gender': 'M',
'address': '123 xyz'
},
{
'id': 2,
'name': 'abc',
'age': 23,
'gender': 'F',
'address': '456 abc'
}
];
var data1 = data.map(x => ({id: x.id, name: x.name, address1: x.address}));
// modify data
data[0].id = 3;
// only data has been modified, not data1
console.log(data);
console.log(data1);
我将使用 map
解构,并使用 shorthand 属性 符号来创建新对象:
// Extracts `id`, `name`, and `address`...
// \−−−−−−−−−−−−−−− ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
const result = data.map(({id, name, address: address1}) => ({id, name, address1}));
// Renames `address` to `address1` −−−−−−−−^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
// Builds new object with result −−−−−−−−−−−−−−−−−−−−−−−−−−/
实例:
const data = [ { 'id' : 1,
'name': 'xyz',
'age': 21,
'gender': 'M',
'address': '123 xyz'},
{ 'id' : 2,
'name': 'abc',
'age': 23,
'gender': 'F',
'address': '456 abc'}
];
const result = data.map(({id, name, address: address1}) => ({id, name, address1}));
console.log(result);
或者您可以在创建新对象时进行重命名:
const result = data.map(({id, name, address}) => ({id, name, address1: address}));
我有一个具有以下属性的数组
data = [ { 'id' : 1,
'name': 'xyz',
'age': 21,
'gender': 'M',
'address': '123 xyz'},
{ 'id' : 2,
'name': 'abc',
'age': 23,
'gender': 'F',
'address': '456 abc'}
]
我正在尝试构建一个只有少数属性的新数组,并像这样更新 属性(地址)
data1= [ { 'id' : 1, 'name': 'xyz', 'address1': '123 xyz'}, { 'id' : 2, 'name': 'abc', 'address1': '456 abc'} ]
我尝试使用映射和删除函数。 但想看看是否有一种简单的方法可以做到这一点。我尝试使用一些 lodash 函数的组合但没有成功。
let data1 = data.map(d => {
return {'id' : d.id, 'name': d.name, 'address1': d.address}
})
一个简单的地图就够了,不需要任何库
只使用 map
function 怎么样?
var data = [{
'id': 1,
'name': 'xyz',
'age': 21,
'gender': 'M',
'address': '123 xyz'
},
{
'id': 2,
'name': 'abc',
'age': 23,
'gender': 'F',
'address': '456 abc'
}
];
var data1 = data.map(x => ({id: x.id, name: x.name, address1: x.address}));
// modify data
data[0].id = 3;
// only data has been modified, not data1
console.log(data);
console.log(data1);
我将使用 map
解构,并使用 shorthand 属性 符号来创建新对象:
// Extracts `id`, `name`, and `address`...
// \−−−−−−−−−−−−−−− ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
const result = data.map(({id, name, address: address1}) => ({id, name, address1}));
// Renames `address` to `address1` −−−−−−−−^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
// Builds new object with result −−−−−−−−−−−−−−−−−−−−−−−−−−/
实例:
const data = [ { 'id' : 1,
'name': 'xyz',
'age': 21,
'gender': 'M',
'address': '123 xyz'},
{ 'id' : 2,
'name': 'abc',
'age': 23,
'gender': 'F',
'address': '456 abc'}
];
const result = data.map(({id, name, address: address1}) => ({id, name, address1}));
console.log(result);
或者您可以在创建新对象时进行重命名:
const result = data.map(({id, name, address}) => ({id, name, address1: address}));