js取出对象数组某个属性拼接成字符串或者取出某些属性组成新的数组
数组users:
users=[{id:1,name:张三},{id:2,name:李四}]
现在需要把数组里所有的 id、name 取出,拼接成一个以逗号分隔的字符串,直接上代码
let userIds = users.map((user) => {
return user.id
}).join(',')
console.log('userIds:',userIds)
let userNames = users.map((user) => {
return user.name
}).join(',')
console.log('userNames:',userNames)
输出结果:
userIds:1,2
userNames:张三,李四
js取出对象数组某些属性组成新的数组
例如下面一个数组,一个数组里包含多个对象,想取多个对象的单独几个属性,例如我只想要下列对象里的date和name值,address不需要
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}]
如果用or循环包括forEach,map循环是取不出来单独想要的属性,需要借助Object.assign方法
最简单的解决办法如下:
let arr = this.tableData.map((item) => {
return Object.assign({}, { date: item.date, name: item.name})
})
console.log(arr);
Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。
如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性。