如何在此 lodash 循环中动态命名我的对象参数?

How to dynamically name my object params in this lodash loop?

https://lodash.com/docs#find

var params = {};

_.forEach(n.tags, function(n, index) {
    console.log(index);
    index++

    // For each tag, create new param.term1, term2, term3 etc...
    params.term[index] = _.result(_.find(n.tags, function(term_id) {
        return term_id;
    }), 'term_id');
});

_.forEach 将遍历 n.tags(最多包含 3 个标签)。

我将 index++ 迭代 1,所以我从 1 而不是 0 开始,以创建 "term1"。

现在下一部分是我尝试动态生成最多 3 个新的 params.term[i] 值。

params.term[index] = _.result(_.find(n.tags, function(term_id) {
    return term_id;
}), 'term_id');

我想要得到的是以下内容:

params.term1 = 111;
params.term2 = 222;
params.term3 = 333;

我目前遇到的错误是 TypeError: Cannot set 属性 '1' of undefined 当我尝试在此处动态设置参数名称时:params.term[index]

您将如何使用 _lodash 完成此操作?

您将 params.term 称为现有数组,这就是您收到错误的原因。试试这个...

params["term" + index] = ....

这将为每个索引创建一个 属性。您可以使用

访问它
params["term1"]

或...

params.term1

您正在尝试设置 params.term[1]params.term[2]and params.term[3]。如果 params.term 是一个数组,这会起作用,但实际上 params.term 似乎不存在。

您说过要设置 params.term1params.term2params.term3,因此您应该执行以下操作以编程方式访问字段 term1term2term3.

params["term" + index] = _.result(_.find(n.tags, function(term_id) {
    return term_id;
}), 'term_id');