【发布时间】:2022-08-19 05:19:58
【问题描述】:
我想在js中创建一个嵌套过滤器 当我过滤我的数组主要数据时受到影响和更改,但我需要初步数据来删除过滤器
我的js代码:
let result = companies;
result.map((item, i) => {212
let rows = [...result[i].table.table_rows].filter((item3) => {
return Object.keys(item3).some(i => item3[i][key] === value[key]);
});
result[i].table.table_rows = [...rows];
return result[i];
});
arrayFilter(result);
我的数据是:
{
\"companies\": [
{
\"company\": {
\"name\": \"company 1\"
},
\"table\": {
\"table_rows\": [
{
\"cells\": {
\"product_name\": \"prod1\",
\"pa_size\": \"12\"
}
},
{
\"cells\": {
\"product_name\": \"prod2\",
\"pa_size\": \"15\"
}
}
]
}
},
{
\"company\": {
\"name\": \"company 2\"
},
\"table\": {
\"table_rows\": [
{
\"cells\": {
\"product_name\": \"prod2-1\",
\"pa_size\": \"12\"
}
},
{
\"cells\": {
\"product_name\": \"prod2-2\",
\"pa_size\": \"18\"
}
}
]
}
}
]
}
我尝试了很多方法来解决这个问题,但我没有得到正确的答案
-
那么为什么要更改原始数据而不是创建新数据呢?
-
我更新了我的代码,我没有更改原始数据
-
您确实更改了原始的
companies数组。赋值let result = companies;不会创建新数组,result只是指向现有的companies数组。如果你想在不接触companies的情况下操作result,那么你应该克隆/复制数组,例如let result = [...companies];。
标签: javascript