`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;
}
我 运行 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;
}