在 jQuery 中使用字符串键将元素添加到数组中
add element to array with string key in 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]);
}
不幸的是,一些逻辑发生了变化,现在有时queryParams
脚本开头的长度为 0,然后这部分失败了。
queryParams[myParam1] = 'title';
和
queryParams[myParam2] = 'DESC'
行不改变查询参数长度,所以长度仍然是 0 和循环
for (var index in queryParams){
无法按预期工作。
我还没有找到如何将键/值添加到数组中。
你对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)
}
相关文章:
- 如何将html元素添加到tampermonkey中
- 如何将html元素添加为生成的内容
- 如何向Selectize元素添加渲染和创建方法
- 向html选择元素添加选项
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何将新的键/值对元素添加到现有数组
- 使用docment.createElement向元素添加选项
- ng重复向一个元素添加条件类
- 为li元素添加标题
- 向ckeditor中的多个元素添加内联样式
- Javascript 向影子根中的自定义元素添加函数
- 将伪元素添加到<文本区域>
- 如果类只包含一个特定数字,则向元素添加类
- DOM:将空元素添加到 DOM 和页面重排
- 是否有 jQuery 事件用于何时将元素添加到文档中
- 通过 ajax 使用自定义滚动条向元素添加内容
- 是否可以用D3将svg元素添加到开放层映射中
- 如何将元素添加到动态数组并排除现有元素
- 在AngularJS中将元素添加到作用域时,如何在所有设备上播放声音
- 将图像元素添加到<a>标签