gpt4 book ai didi

javascript - Underscore.js:_.object 函数的意外行为

转载 作者:行者123 更新时间:2023-12-02 18:02:23 25 4
gpt4 key购买 nike

这是 _.object 函数文档中的描述。

Converts arrays into objects. Pass either a single list of [key, value] pairs, or a list of keys, and a list of values. If duplicate keys exist, the last value wins.

通过此示例,它可以按预期工作。键“1”被分配值“TEST1”。

_.object(["1", "1"], ["TEST", "TEST1"])

>> Object {1: "TEST1"}


_.object(["1", "1"], ["TEST"])

>> Object {1: undefined}

在最后一个示例中,我希望该值为“TEST”,但它是未定义的。

此行为有具体原因吗?

谢谢。

最佳答案

行为是正确的。第一次通话

_.object(["1", "1"], ["TEST", "TEST1"])

将 key 1 与 TEST 关联,并将 key 1 与 TEST1 关联(覆盖之前的关联)。

第二次调用:

_.object(["1", "1"], ["TEST"])

具有相同的逻辑,但第二个键 1 与“values”数组中第二个位置的元素关联,该元素未定义。

PS:code对于 _.object 是这样的:

  // Converts lists into objects. Pass either a single array of `[key, value]`
// pairs, or two parallel arrays of the same length -- one of keys, and one of
// the corresponding values.
_.object = function(list, values) {
if (list == null) return {};
var result = {};
for (var i = 0, length = list.length; i < length; i++) {
if (values) {
result[list[i]] = values[i];
} else {
result[list[i][0]] = list[i][1];
}
}
return result;
};

他们似乎确实指定数组需要具有相同的长度。从代码中可以明显看出,如果第二个数组较大,则最后一个值将被忽略,如果第二个数组较小,则最后一个值将未定义。

关于javascript - Underscore.js:_.object 函数的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20418994/

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