这是我的数据:https://api.myjson.com/bins/r82tg
我使用.filter()方法根据其名称进行过滤,
var filteredData = data;
var children = filteredData.children;
filteredData.children = children.filter(children => children.name != d.name);
但是当我console.log我的原始数据时。它还会被过滤。这是为什么?在过滤之前如何保留原始数据数组?
答案 0 :(得分:0)
通过深层副本使用其他变量,
library(stringr)
str_replace_all(str, "[^[:alnum:]]", " ")
答案 1 :(得分:0)
data = {
id: 30,
children: [
{ name: "stack"},
{name:"overflow"}
]
}
var filteredData = JSON.parse(JSON.stringify(data));
var children = filteredData.children;
filteredData.children = children.filter(children => children.name != "stack");
console.log(filteredData)
console.log(data)
答案 2 :(得分:0)
之所以会出现问题,是因为您的数据是一个对象,并且您正在通过引用将其赋给变量,因此您需要先克隆数据,然后再像这样进行过滤
var filteredData = {...data};
var children = filteredData.children;
filteredData= {...filteredData, children: children.filter(children => children.name != d.name);