ren*_*thy 2 javascript arrays jquery
我已经有了可以运行的代码。代码的某些部分应该更改 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]);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,一些逻辑已经改变,现在有时queryParams此脚本开头的长度为 0,然后这部分会失败。
queryParams[myParam1] = 'title';
Run Code Online (Sandbox Code Playgroud)
和
queryParams[myParam2] = 'DESC'
Run Code Online (Sandbox Code Playgroud)
行不会改变queryParams.length,所以长度仍然是0并且循环
for (var index in queryParams){
Run Code Online (Sandbox Code Playgroud)
不按预期工作。
我还没有找到如何将键/值添加到数组中。
JavaScript 的标准数组根本不是真正的数组,这一事实让您有点困惑。
您没有queryParams在引用的代码中将其用作数组。你把它当作一个对象来使用。默认情况下,对象没有length属性。
您没有说出更改的内容,因此很难为您提供帮助,但请注意,即使queryParams是一个数组并且您按原样向其添加属性,该属性length仍将保留0。数组的length只与一类特殊的属性(满足“数组索引”定义的属性)相关,而不与所有属性相关。
一些可能有帮助的例子:
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)
}
Run Code Online (Sandbox Code Playgroud)