`query[name_value[0]] = name_value[1];` 中的数组解构是什么?

What is array destruturing in `query[name_value[0]] = name_value[1];`?

我 运行 eslint 在我的一个项目中反对我的 JavaScript。今天它告诉我:

error: Use array destructuring

违规代码如下所示:

query[name_value[0]] = name_value[1];

我还有一个类似这样的声明:

query[name_value[0]] = true;

而且我没有收到错误,所以看起来 衰减 会发生在右侧。

我查看了有关 array or object desstructuring 的文档,我不得不说我不明白他们认为 错误

功能齐全,以防万一:

var query = null;

function get_query_string(name)
{
    var url,
        location_query,
        query_array,
        idx,
        name_value;

    if(null === query)
    {
        url = String(window.location.href);
        location_query = url.split("?", 2);
        query_array = 2 == location_query.length
                         ? location_query[1].split("&")
                         : [];

        query = {};

        for(idx in query_array)
        {
            if(Object.prototype.hasOwnProperty.call(query_array, idx))
            {
                name_value = query_array[idx].split("=", 2);
                if(2 === name_value.length)
                {
                    query[name_value[0]] = name_value[1];  // offensive line
                }
                else
                {
                    query[name_value[0]] = true;
                }
            }
        }
    }

    return query[name];
}

更新

我现在可以正常工作(至少在 Firefox 中是这样),我只是将 query 的类型更改为对象,顶部的测试也必须更改。这不会改变发生解构错误的事实。

我认为此更改应该删除 "error"(尽管错误看起来很严重!)

        if(Object.prototype.hasOwnProperty.call(query_array, idx))
        {
            let [key, value] = query_array[idx].split("=", 2);
            if(value !== undefined)
            {
                query[key] = value;
            }
            else
            {
                query[key] = true;
            }
        }

甚至

        if(Object.prototype.hasOwnProperty.call(query_array, idx))
        {
            let [key, value] = query_array[idx].split("=", 2);
            query[key] = value === undefined ? true : value;
        }