gpt4 book ai didi

javascript - 创建一个 codemod 以将新元素添加到数组

转载 作者:行者123 更新时间:2023-12-05 02:59:00 26 4
gpt4 key购买 nike

我一直在努力使用 jscodeshift 将新对象添加到对象数组。我的问题是在获得 VariableDeclarator 后,我不知道如何查询数组。在插入新节点之后,我需要获取数组中的最后一个元素。这是代码:

export default function transformer(file, api) {

const j = api.jscodeshift;
const root = j(file.source);
const changeList = root.find(j.VariableDeclarator, {
id: {name: 'list'},
}).closest(j.ArrayExpression, {
elements: [""]
}).replaceWith(p => {
console.log(p);
}).toSource();

};

我正在 AST explorer 上玩它

最佳答案

.closest 返回与类型匹配的最近的 ancestor 节点。 ArrayExpression 是一个后代,所以您必须再次使用 .find。这有效:

export default function transformer(file, api) {

// import jscodeshift
const j = api.jscodeshift;
// get source code

const root = j(file.source);
// find a node

return root.find(j.VariableDeclarator, {id: {name: 'list'}})
.find(j.ArrayExpression)
.forEach(p => p.get('elements').push(j.template.expression`x`))
.toSource();
};

关于javascript - 创建一个 codemod 以将新元素添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com