【发布时间】:2020-07-06 15:59:23
【问题描述】:
我正在尝试将与正则表达式匹配的所有对象排序到一个数组中。 这似乎不适用于扩展运算符和 useState,有什么办法可以做到吗? 我现在得到的结果是样本只给了我最后一个匹配它的对象,没有别的。 我想要的效果是所有匹配的样本都被推入样本状态。
const [accessories, setAccessories] = useState([]);
const [paints, setPaints] = useState([]);
const [samples, setSamples] = useState([]);
// Load order into state
useEffect(() => {
loadUser();
getOrderById(match.params.orderId);
}, []);
// Load order into state
useEffect(() => {
if (!loading) {
console.log(order.line_items);
for (let i = 0; i < order.line_items.length; i++) {
if (order.line_items[i].sku.match(/^(TAC|T.BU.AC)/)) {
console.log('SKU: ', order.line_items[i].sku);
//@ts-ignore
setAccessories([...accessories, order.line_items[i]]);
console.log(accessories);
}
if (order.line_items[i].sku.startsWith('TBA') || order.line_items[i].sku.match(/^TCR(?!0000)/)
|| order.line_items[i].sku.match(/^TCR0000/)) {
//@ts-ignore
setPaints([...paints, order.line_items[i]]);
}
if (order.line_items[i].sku.match(/^TCR\d+P?\d+SAMP/)) {
console.log(samples);
console.log(order.line_items[i]);
//@ts-ignore
setSamples([...samples, ...[order.line_items[i]]]);
}
}
}
}, [loading]);
【问题讨论】:
-
order.line_items[i].sku.match(/^TCR(?!0000)/) || order.line_items[i].sku.match(/^TCR0000/)没有意义 - 如果sku以 TCR 开头,则至少其中一个将评估为true。您正在寻找与 0000 相关的逻辑是什么?
标签: javascript reactjs