我有一个类组件,它的状态包含一个 filterItems[] 空白数组。我需要填充过滤器项目数组中的值
所以,我有一个来自API的数据,看起来像这样:
0:
emp_code: "a001"
company_code: "company_a"
keys: ["id", "post" ]
dtypes: ["str", "int"]
1:
emp_code: "b001"
company_code: "company_b"
keys: ["sal", "name" ]
dtypes: ["int", "str"]
//so on for other companies and employees
所以,像这样,我有一些员工。现在我必须循环这个api数据,提取信息并将其存储到另一个名为“过滤器”的数组中,然后将其传递给函数。
我的过滤器数组应该看起来像这样:
filters: [
{
key_name: "id",
company_code: "company_a",
input_type: "text",
dtype: "str"
},
{
key_name: "post",
company_code: "company_a",
input_type: "text",
dtype: "int"
},
//... keys for other company
]
本质上,我需要做以下反应
for each emp_code
for each company_code
for each key:
keys[i]== filters.key_name
company_code== filters.company_code
//...so on
这里的问题是,每个公司都有一组键,所以如果员工属于同一家公司,那么我不需要再次添加到过滤器数组中。所以,我基本上需要检查唯一的company_code,并将公司拥有的不同类型的键添加到过滤器数组中。
假设您的数据是一个数组。
let filters = [];
data.forEach(item => {
item.keys.forEach(key => {
item.dtypes.forEach(dtype => {
const filter = {
key_name: key,
company_code: item.company_code,
input_type: "text",
dtype: dtype
};
filters.push(filter)
})
})
});
如果我没理解错的话,您希望像这样过滤您的数据:
假设您将 API 数据存储在名为 myArr
的变量中
创建一个名为updatedArr
的新变量,它将映射到myArr
const updatedArr = myArr.map((company, compIndex, compArr) => {
return company.keys.map((key, keyIndex, keyArr) => {
return {
key_name: key,
company_code: company.company_code,
input_type: "text",
dtype: company.dtypes[keyIndex]
}
})
}).reduce((acc, cur) => {
return [...acc, ...cur]
}, [])
然后解析updatedArr以仅获取uniqueValue
let uniqueValues = [];
//parses out duplicates
updatedArr.forEach(function(item) {
//i will be 0 or more if there already is an item in our array, which means the current item we are iterating over is a duplicate
var i = uniqueValues.findIndex(
x => x.dtype == item.dtype && x.company_code == item.company_code
);
if (i <= -1) {
//if item is not yet inside uniqueValues, add it to uniueValues
uniqueValues.push(item);
}
});
然后使用唯一值更新组件状态
this.setState({
filters: uniqueValues
})
还创建了一个沙盒来向您展示此工作:https://codesandbox.io/s/rendering-companies-ibs7g
然而,我得到的输出是不正确的,这不应该运行9次,而是只运行3次,在库存中的[公司]组中的每个IP一次。另外,列表中只有三个主机名需要分配给清单表中的每个主机。
问题内容: 我有一个对快速服务器(我自己的服务器)进行反应的组件。服务器用于在上签署交易。一旦将交易包含在一个块中,就将一个对象返回给服务器。看起来像这样: 我需要将存入上述组件的状态。我已经搜索了2天,可能丢失了一些非常明显的内容。 这是服务器端代码还是客户端代码?由于与之交谈的固有时间延迟,我是否需要学习和使用异步? 任何帮助表示赞赏! 谢谢 问题答案: 要发出发布请求,您必须通过compon
本文向大家介绍jquery 动态遍历select 赋值的实例,包括了jquery 动态遍历select 赋值的实例的使用技巧和注意事项,需要的朋友参考一下 获取select 选中的值: Ajax 动态为select赋值: 以上这篇jquery 动态遍历select 赋值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
我有一个对象数组,如下所示: 我想把它添加到一个退出的对象中,其中id是该对象的一个键,如下所示:
问题内容: 我正在尝试仅更新数组状态中的一个元素,但不确定如何执行此操作。 State 设定状态 如果我想更改标记的第四个元素中的键,该怎么做? 谢谢 问题答案: 重要的一点是,我们不应该直接更改状态数组,而要始终在新数组中进行更改,然后使用setState更新状态值。 如 Doc 建议: 切勿直接更改this.state,将this.state视为不可变。 更新状态数组的基本流程是: 1- 首先
问题内容: 我有一个php页面,可从其中获取json中的响应: 我想循环它,并将每个追加到div。 这是我尝试的: 该警报为,响应为json数组。 请帮忙。 问题答案: 您的数组具有存储对象 使用的默认键(0,1):