我有一个对象数组,我想用一个依赖于序列的新值来更新。
所以这:
[
{ "init": 3, "data": "..." },
{ "init": 3, "data": "..." },
{ "init": 3, "data": "..." },
{ "init": 5, "data": "..." },
{ "init": 6, "data": "..." },
{ "init": 6, "data": "..." },
{ "init": 7, "data": "..." },
{ "init": 8, "data": "..." }
}
]
Run Code Online (Sandbox Code Playgroud)
..变成这样:
[
{ "init": 3, "group": "odd", "data": "..." },
{ "init": 3, "group": "odd", "data": "..." },
{ "init": 3, "group": "odd", "data": "..." },
{ "init": 5, "group": "even", "data": "..." },
{ "init": 6, "group": "odd", "data": "..." },
{ "init": 6, "group": "odd", "data": "..." },
{ "init": 6, "group": "odd", "data": "..." },
{ "init": 7, "group": "even", "data": "..." },
{ "init": 8, "group": "odd", "data": "..." }
}
]
Run Code Online (Sandbox Code Playgroud)
也就是说,在每个项目中插入一个“ group”元素,该元素取决于它是“ init”值的最偶数组还是最奇数组。
数组总是按“ init”值升序排列。
注意 "odd"或者"even"是不从的奇怪/均匀度测定"init"值,但的奇怪/均匀性基团即初始化值落入。在此示例中,第一组初始化值是“ 3”,因此所有带有的项"init":"3"都标记为"odd"。第二组将是“偶数”组,因此标记为“偶数”。
它并不经常使用,但像map和这样的函数forEach需要this在回调中使用可选的最终argumnet 。您可以利用此优势在继续循环时保持状态。
例如:
let a = [
{ "init": 3 },
{ "init": 3 },
{ "init": 3 },
{ "init": 5 },
{ "init": 6 },
{ "init": 6 },
{ "init": 7 },
{ "init": 8 }
]
let res = a.map(function({init}) {
if (this.last !== init) this.even = !this.even
this.last = init
return {init, group:this.even ? "even": "odd" }
}, {last: undefined, even:true} )
console.log(res)Run Code Online (Sandbox Code Playgroud)
注意事项:由于依赖于this,因此您不能使用箭头函数进行回调。
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |