我试图为数组中的每个对象设置一个布尔属性.

import { Component, OnInit } from "@angular/core";
import * as _ from "lodash";

@Component({
  selector: "app-root",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent implements OnInit {
  title = "CodeSandbox";

  colors: {hex: string, used: boolean}[] = [
    {hex: "#ff0000", used: true},
    {hex: "#00ff00", used: true},
    {hex: "#0000ff", used: true}
  ]

  ngOnInit() {
    _.forEach(this.colors, c => c.used = false);
    console.log(this.colors);
  }
}

显然只有第一个物体会受到影响.这是输出.

0: Object
hex: "#ff0000"
used: false
1: Object
hex: "#00ff00"
used: true
2: Object
hex: "#0000ff"
used: true

这就是Sandbox :https://codesandbox.io/s/strange-water-p19ihj?file=/src/app/app.component.ts

它与_.map和原生forEach一起使用.我是不是漏掉了什么,还是有什么问题?

推荐答案

documentation表示您可以通过显式返回false来提前退出_.forEach(),正如您的箭头函数通过隐式返回所做的那样.

循环访问集合的元素并 for each 元素调用Iteratee.使用三个参数调用迭代器:(值、索引|键、集合).Iteratee functions may exit iteration early by explicitly returning false.

因为您没有封闭Arrow函数的主体,所以它隐式返回主体的计算值;c.used = false的计算结果为false,然后返回并退出forEach.

用大括号将正文括起来将避免箭头函数的隐式返回(它现在将像任何没有Return语句的函数一样返回undefined),从而允许forEach按预期完成.

_.forEach(this.colors, c => {c.used = false});

有关从箭头函数返回的讨论,请参阅:When should I use a return statement in ES6 arrow functions.

Javascript相关问答推荐

Express.js:使用Passport.js实现基于角色的身份验证时出现太多重定向问题

容器如何更改默认插槽中子项的显示?

Next.js Next/Image图像隐含性有任何类型-如何修复?

窗口.getComputedStyle()在MutationObserver中不起作用

过滤对象数组并动态将属性放入新数组

如何在Obsidian dataview中创建进度条

使用useEffect,axios和useParams进行react测试

setcallback是什么时候放到macrotask队列上的?

JS,当你点击卡片下方的绿色空间,而它是在它的背后转动时,

我可以使用使用node.js创建的本地主机来存储我网站上提交的所有数据吗?没有SQL或任何数据库.只有HTML语言

Reaction Native中的范围滑块

本地库中的chartjs-4.4.2和chartjs-plugin-注解

为什么客户端没有收到来自服务器的响应消息?

使用带有HostBinding的Angular 信号来更新样式?

如何在 Select 文本时停止Click事件?

如何在Bootstrap中减少网格系统中单个div的宽度

JavaScript不重定向配置的PATH

<;img>;标记无法呈现图像

使用父标签中的Find函数查找元素

未捕获语法错误:Hello World中的令牌无效或意外