gpt4 book ai didi

javascript - 嵌套数组如果值相等则将对象添加到状态数组

转载 作者:行者123 更新时间:2023-12-03 00:07:12 26 4
gpt4 key购买 nike

我正在尝试迭代嵌套的 for 循环。如果某个值等于某个值,我想将该对象添加到我所在状态的数组中。

this.state = {
custBehavior: [],
custService: [],
custEngagement: [],
custUsage: []
}

代码

this.props.insights.map((behavior) =>
behavior.map((items) =>
{if (items.scoreCategory === "Behavior") {
this.setState(behaviorInsight => ({
custBehavior: [...behaviorInsight.custBehavior, items]
}))
}}
)

prop 信息是下面的完整 json。

如果我删除 if 语句并执行此操作....

this.props.insights.map((behavior) =>
behavior.map((items) =>
console.log(items)
)
);

我将打印出数组中的每个对象,同样,示例 json 如下。

示例数据

[{
"scoreModelId": "DNA_APPLE_HML_TAG",
"scoreDisplayName": "Apple Enthusiast",
"scoreCategory": "Behavior",
"scoreSystem": "LMH",
"scoreValue": "HIGH",
"scoreDate": "2019-01-05",
"scoreLevel": "L",
"scorePriority": 1
}, {
"scoreModelId": "DNA_GOOGLE_HML_TAG",
"scoreDisplayName": "Google Enthusiast",
"scoreCategory": "Behavior",
"scoreSystem": "LMH",
"scoreValue": "HIGH",
"scoreDate": "2019-01-05",
"scoreLevel": "L",
"scorePriority": 1
}, {
"scoreModelId": "MG6M_IN_A",
"scoreDisplayName": "LTV Model",
"scoreCategory": "Segmentation",
"scoreSystem": "DECIMAL",
"scoreValue": "14.06",
"scoreDecile": "2",
"scoreCentile": "13",
"scoreDate": "2019-01-14",
"scoreLevel": "L"
}]

感谢您的帮助,看不到我在这里缺少的内容。

最佳答案

您可以通过使用reduce来实现它。然后,您可以通过过滤每个行为对象将每个items添加到最终数组中。

你应该只设置一次状态,因为它是一个异步函数

const custBehavior = this.props.insights.reduce(
(acc, behavior) => [...acc, ...behavior.filter(items => items.scoreCategory === "Behavior")], //Takes out every item corresponding to the filter and adds them to the final array
[] //The starting value, an empty array
)
this.setState({ custBehavior })

要将其应用于其他类型,您可以使用上面的代码创建一个函数:

customCategory = (category, name) => {
const custThing = this.props.insights.reduce(
(acc, behavior) => [...acc, ...behavior.filter(items => items.scoreCategory === category)],
[]
)
this.setState({ [name]: custThing })
}

//

this.customCategory('Behavior', 'custBehavior')
this.customCategory('Segmentation', 'yourStateVariableName')

state 变量名称将使用计算属性设置,过滤器参数也通过函数参数给出。

关于javascript - 嵌套数组如果值相等则将对象添加到状态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54910373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com