【问题标题】:How can i display more than one array elements that satisfy a condition?如何显示多个满足条件的数组元素?
【发布时间】:2019-06-12 00:09:24
【问题描述】:

如何向控制台显示与条件匹配的多个数组值(例如:=== "McDonalds")?

我只设法显示了一项。但我不知道如何显示我的数组的所有值。

public products: product[] = [
    { id: 1, name: "McFlurry", price: 2, enseigne:"McDonalds" },
    { id: 2, name: "Potatoes", price: 3, enseigne:"McDonalds" },
    { id: 3, name: "BigMac", price: 4, enseigne:"KFC" },
    { id: 4, name: "Nuggets", price: 3, enseigne:"KFC" }
];


searchEnseigne(){
    let server = this.products.find(x => x.enseigne === "McDonalds");
    console.log(server);
}

【问题讨论】:

  • 你想如何显示它们?在控制台中一次一行?作为逗号分隔的列表?也许请告诉我们您的预期输出。
  • 您要查看哪些产品是“麦当劳”?
  • 我试图在控制台中显示它实际上就像一个数组列表
  • Shivaraj : 没错
  • @SteveDemeulemeester,请编辑您的问题,说明您想要所有数组元素的 enseigne 为“McDonalds”。目前,您只是要求所有数组项。

标签: javascript typescript


【解决方案1】:
 let server = this.products.filter(x => x.enseigne === "McDonalds");
 console.log(server);

【讨论】:

  • 如果你看这个问题,你有一个不正确的答案,我读了 cmets,我知道你是对的,但你必须让 OP 编辑​​问题并更正它并回答他。跨度>
  • @Aragorn:谢谢。我不确定为什么当问题本身不清楚时人们会否决,他使用的是控制台,而我使用的是相同的。你能告诉我你想让我做什么吗?
  • 你从哪里得到这个:if(product.enseigne === "McDonalds") 要求?任何只看问题的人都认为你不正确,因此投反对票。
  • 抱歉不清楚,在我的例子中产品是一个接口,所以我猜我不能在 for 循环中使用它
  • @Shivaraj 我根据 cmets 编辑了问题,您的答案现在看起来不错,+1
【解决方案2】:

使用filter 代替find

filter() 方法创建一个新数组,其中包含通过测试的所有元素。而find() 方法返回第一个元素

的值
searchEnseigne(){
    let server = this.products.filter(x => x.enseigne === "McDonalds");
    console.log(server);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 2011-04-16
    • 2018-07-26
    • 2012-12-04
    • 1970-01-01
    • 2020-07-14
    相关资源
    最近更新 更多