Shr*_*tty 33 javascript arrays
我想为数组中的所有对象添加一个键:value参数.
例如:
var arrOfObj = [{name: 'eve'},{name:'john'},{name:'jane'}];
Run Code Online (Sandbox Code Playgroud)
现在我想为所有对象添加一个新参数isActive,以便生成的数组看起来像.
例如:
[{
name: 'eve',
isActive: true
}, {
name: 'john',
isActive: true
}, {
name: 'jane',
isActive: true
}]
Run Code Online (Sandbox Code Playgroud)
我总是可以遍历数组并插入一个键值对.但是想知道是否有更好的方法
Nen*_*car 50
你可以这样做 map()
var arrOfObj = [{
name: 'eve'
}, {
name: 'john'
}, {
name: 'jane'
}];
var result = arrOfObj.map(function(o) {
o.isActive = true;
return o;
})
console.log(result)Run Code Online (Sandbox Code Playgroud)
如果要保留原始数组,可以使用以下方法克隆对象 Object.assign()
var arrOfObj = [{
name: 'eve'
}, {
name: 'john'
}, {
name: 'jane'
}];
var result = arrOfObj.map(function(el) {
var o = Object.assign({}, el);
o.isActive = true;
return o;
})
console.log(arrOfObj);
console.log(result);Run Code Online (Sandbox Code Playgroud)
Ser*_*lov 22
当然.看一下ES5的数组方法
在这种情况下,您使用.map():
const newArr = [
{name: 'eve'},
{name: 'john'},
{name: 'jane'}
].map(v => ({...v, isActive: true}))
Run Code Online (Sandbox Code Playgroud)
或者在ES6中
const initialArr = [
{name: 'eve'},
{name: 'john'},
{name: 'jane'}
]
const newArr1 = initialArr.map(v => ({...v, isActive: true}))
const newArr2 = initialArr.map(v => Object.assign({}, {isActive: true}))
// Results of newArr1 and newArr2 are the same
Run Code Online (Sandbox Code Playgroud)
Atm那些方法有很好的浏览器支持(除了猜猜谁).
另外,我想你reccomend以确保您了解以下方法:.MAP() ,.filter() ,和.降低() .这是一个很好的开始
Mar*_*ana 15
我对这里提出的一些答案会有点谨慎,以下示例根据方法输出不同:
const list = [ { a : 'a', b : 'b' } , { a : 'a2' , b : 'b2' }]
console.log(list.map(item => item.c = 'c'))
// [ 'c', 'c' ]
console.log(list.map(item => {item.c = 'c'; return item;}))
// [ { a: 'a', b: 'b', c: 'c' }, { a: 'a2', b: 'b2', c: 'c' } ]
console.log(list.map(item => Object.assign({}, item, { c : 'c'})))
// [ { a: 'a', b: 'b', c: 'c' }, { a: 'a2', b: 'b2', c: 'c' } ]
Run Code Online (Sandbox Code Playgroud)
我使用node v8.10.0来测试上面的代码片段.
| 归档时间: |
|
| 查看次数: |
46093 次 |
| 最近记录: |