gpt4 book ai didi

javascript - 在jquery中使用字符串键将元素添加到数组

转载 作者:行者123 更新时间:2023-11-30 12:56:56 27 4
gpt4 key购买 nike

我已经有了可运行的代码。代码的某些部分应该更改 queryParams 数组的两个值:

myParam1 = 'sort_by';
myParam2 = 'sort_order';
queryParams[myParam1] = 'title';
if (queryParams[myParam2] == 'ASC') {
queryParams[myParam2] = 'DESC';
} else { //DESC or undefined
queryParams[myParam2] = 'ASC';
}
queryPairs = [];
for (var index in queryParams) {
queryPairs.push(index + "=" + queryParams[index]);
}

不幸的是,一些逻辑已经改变,现在有时 queryParams 在此脚本的开头长度为 0,然后这部分失败。

queryParams[myParam1] = 'title';

queryParams[myParam2] = 'DESC'

行不改变queryParams.length,所以长度还是0,循环

for (var index in queryParams){

没有按预期工作。

我还没有找到如何将键/值添加到数组中。

最佳答案

您对 JavaScript 的标准数组 aren't really arrays at all 感到有点困惑.

在引用的代码中,您没有将 queryParams 用作数组。您将其用作对象。默认情况下,对象没有 length 属性。

你还没有说改变了什么,所以很难帮助你,但请注意,即使 queryParams 是一个数组并且你按原样向它添加一个属性,length 将保持为 0。数组的长度只与一类特殊的属性(满足“数组索引”定义的属性)有关,而不与所有属性有关。

一些可能有帮助的例子:

var a = []; // a is an array
console.log(a.length); // "0"
a['foo'] = 'bar';
console.log(a.length); // "0", the `foo` property doesn't have any effect on `length`
a[0] = 'zero';
console.log(a.length); // "1", the `0` property *does* have an effect on `length`

var o = {}; // o is an object
var myParam1 = 'sort_by';
var myParam2 = 'sort_order';
var propertyName;

o[myParam1] = 'foo';
o[myParam2] = 'DESC';

for (propertyName in o) {
console.log(propertyName); // "sort_by" and then "sort_order" (the order is not defined)
}

关于javascript - 在jquery中使用字符串键将元素添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18761899/

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