问题描述
我需要用另一个数组中的新数据替换数组中的某些数据。我执行了一个循环,其中我从某些值中将单词删除为小写。现在,我想更新数据,但是由于某些原因它不会更新。
const initialState = {
list: []
};
case Constants.dataNodes.success: {
const newState = { ...state };
newState.list = [...newState.list,...action.payload];
const filterFQDN = [];
for (let i = 0; i < newState.list.length; i++) {
filterFQDN.push(newState.list[i].fqdn.toLowerCase());
}
for (let a = 0; a < newState.list.length; a++) {
for (let b = 0; b < filterFQDN.length; b++) {
if (filterFQDN[b] === newState.list[a]) {
return newState.list = [...newState.list[a].fqdn,...filterFQDN[b]];
}
}
}
}
解决方法
您可以浅表复制现有状态,然后浅表复制现有state.list到新数组中,并将有效负载附加到末尾。将此新数组映射到另一个document.getElementById("top").scrollIntoView();
属性toLowerCase()
。
fqdn
由于您从一个空数组开始,您只需要case Constants.dataNodes.success: {
const newState = {
...state,list: [...state.list,...action.payload].map((el) => ({
...el,fqdn: el.fqdn.toLowerCase()
}))
};
}
传入的新数据,因此您可以映射有效负载而不是每次映射整个状态数组。
toLowerCase