const pairs = new Map([ [')', '('], [']', '['], ['}', '{'] ]); 作者:LeetCode-Solution 链接:https://leetcode.cn/problems/valid-parentheses/solution/you-xiao-de-gua-hao-by-leetcode-solution/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
时间: 2024-03-07 07:53:16 浏览: 29
这段代码定义了一个Map对象,用于在检查括号匹配时快速查找括号的对应关系。这个Map对象的键值对表示了右括号与左括号之间的对应关系。例如,')'对应的左括号是'(',']'对应的左括号是'[','}'对应的左括号是'{'。在实际匹配的过程中,每当遇到一个左括号时,就将它的对应右括号存入栈中。当遇到一个右括号时,就从栈中取出一个元素,如果这个元素不是对应的左括号,说明括号不匹配,返回false;否则继续匹配。如果最后栈为空,说明所有的括号都匹配,返回true。
相关问题
const watchSelectedModelChange = async (selected: ISelected) => { newVar = selected };外部参数获取传入的参数
如果你想在外部获取传入的参数,可以将该参数声明在函数外部,并在函数内部进行赋值,如下所示:
```
let newVar: ISelected; // 外部参数声明
const watchSelectedModelChange = async (selected: ISelected) => {
newVar = selected; // 内部参数赋值
};
```
这样,在调用 `watchSelectedModelChange` 函数后,`newVar` 就可以获取到传入的参数 `selected` 的值了。需要注意的是,由于该函数是异步函数,如果你需要在获取到 `newVar` 的值后进行其他操作,可以使用 `Promise` 或 `async/await` 来控制执行顺序。
async openDialog () { console.log(this.objFormData, '编辑信息') // 获取所有案由的违规条款选项和依据数据 const optionsMap = new Map() const basisMap = new Map() await Promise.all(this.objFormData.accordList.map(async accord => { // console.log(accord, '打印') const { data: optionData } = await getLawRules(accord.violationAccord) optionsMap.set(accord.violationAccord, lawTreeFilter(optionData)) basisMap.set(accord.violationAccord, accord.accordBasis) })) // 处理条例数据 const gistList = [] for (const accord of this.objFormData.accordList) { accord.accordDetail.forEach(item => { let labels = item.violationClause.split("-").map(str => str.trim()).filter(Boolean) // console.log(labels, 'labels') const illegalOptions = accord.illegalOptions || optionsMap.get(accord.violationAccord) const ruleIdList = [] let options = illegalOptions for (const label of labels) { const option = options.find(opt => opt.label === label) if (option) { ruleIdList.push(option.value) options = option.children } } // console.log(ruleIdList,'ruleIdList') // console.log(options,'options') // 添加选择的数据到数组中 // const selectedData = { // violationAccord: accord.violationAccord, // violationAccordText: accord.violationAccordText, // illegalValue: ruleIdList // } // gistList.push(selectedData) // 添加数据到回显数据中 const elRuleList = [{ illegalValue: ruleIdList }]; console.log(elRuleList,'hhhhhh') const echoData = { gistValue: accord.violationAccordText, ruleList: elRuleList, illegalOptions: illegalOptions, basis: basisMap.get(accord.violationAccord) } this.gistList.push(echoData) }) } },这个方法中,这个 accord.violationAccordText值相等的把他们对应的elRuleList这个值放到一个ruleList里面
好的,你可以使用 Map 数据结构来处理相同 violationAccordText 值的情况,将 echoData 存储在 Map 中,以 violationAccordText 作为键名。如果已经存在相同键名的数据,则将其 elRuleList 值合并到已存在数据的 ruleList 中。可以参考下面的代码:
```
async openDialog() {
console.log(this.objFormData, "编辑信息");
const optionsMap = new Map();
const basisMap = new Map();
await Promise.all(
this.objFormData.accordList.map(async (accord) => {
const { data: optionData } = await getLawRules(accord.violationAccord);
optionsMap.set(accord.violationAccord, lawTreeFilter(optionData));
basisMap.set(accord.violationAccord, accord.accordBasis);
})
);
const echoDataMap = new Map();
for (const accord of this.objFormData.accordList) {
accord.accordDetail.forEach((item) => {
const labels = item.violationClause
.split("-")
.map((str) => str.trim())
.filter(Boolean);
const illegalOptions =
accord.illegalOptions || optionsMap.get(accord.violationAccord);
const ruleIdList = [];
let options = illegalOptions;
for (const label of labels) {
const option = options.find((opt) => opt.label === label);
if (option) {
ruleIdList.push(option.value);
options = option.children;
}
}
const elRuleList = [{ illegalValue: ruleIdList }];
const echoData = {
gistValue: accord.violationAccordText,
ruleList: elRuleList,
illegalOptions: illegalOptions,
basis: basisMap.get(accord.violationAccord),
};
if (echoDataMap.has(accord.violationAccordText)) {
// 如果已经存在相同键名的数据,则将其 elRuleList 值合并到已存在数据的 ruleList 中
const existingEchoData = echoDataMap.get(accord.violationAccordText);
existingEchoData.ruleList.push(...elRuleList);
} else {
echoDataMap.set(accord.violationAccordText, echoData);
}
});
}
// 将 Map 中的数据转为数组
this.gistList = Array.from(echoDataMap.values());
},
```
希望这个修改能够帮到你。