将字符串添加到 JavaScript 数组
Adding strings to javascript array
>我有以下代码
array = {};
function add(group,to_add){
var index,to_append = "";
if(array[group] === null || array[group] === undefined){
array[group] = [to_add];
index = array.length;
if(index != 0)
index = array.length--;
}else{
array[group].push(to_add);
index = array.indexOf(group)--;
}
}
add("some_group","something")
并执行console.log(array)
后,数组日志为空,我不明白为什么......有人可以帮助我吗?泰姆
编辑
等等,伙计们,毕竟我有数组={}正确。错误仍在 :'x 上
第3章 迷雾加深
伙计们,使用上面的代码,我让它仅在数组之前不为空时才工作,因此如果数组{ some_key: Array[1] }
,它实际上可以工作.有什么想法吗?xD"GROUP"与"some_key"不同,因此该组是"新的"
数组是数字索引的,不能像那样访问
var array = [];
array[0] = 'something';
在您的情况下,您需要一个对象
var obj = {};
obj['name'] = 'dave';
请注意,您的代码现在将给出 NaN 的长度,因为对象没有长度属性(因此 array.length 不起作用,当您尝试递增/递减它时会给你 NaN)
您需要做Object.keys(obj).length
才能获得长度
即Object.keys({name:'bob'}).length
将给出 1 的长度
基于@Andy的答案,可以进一步归结:
var data = {};
function add(group, value) {
data[group] = data[group] || [];
data[group].push(value);
}
代码失败的原因
真的,这条线给你带来了问题:
if(index != 0)
index = array.length--;
在 上使用递减运算符 array.length
会导致数组删除您刚刚推送的最后一个值。这也是为什么你的代码只在数组为空时才失败,因为如果数组已经存在,你不会递减array.index
。
将其封装在类中
为什么不把它变成一个对象单例,或者更好的是一个类呢?
function DataStore(data) {
this.data = data || {};
}
DataStore.prototype = {
constructor: DataStore,
add: function(group, value) {
this.data[group] = this.data[group] || [];
return this.data[group].push(value) - 1;
},
contains: function(group, value) {
if (!this.containsGroup(group)) {
return false;
}
return this.data[group].indexOf(value) > -1;
},
containsGroup: function(group) {
return this.data.hasOwnProperty(group);
},
forEach: function(callback, context) {
context = context || this;
var key, index, value, length;
for (key in this.data) {
if (this.data.hasOwnProperty(key)) {
for (index = 0, length = this.data[key].length; i < length; i++) {
value = this.data[key][index];
if (callback.call(context, value, index, key) === false) {
return;
}
}
}
}
},
get: function(group, index) {
if (!this.containsGroup(group)) {
return null;
}
else if (index == null) {
return this.data[group];
}
else if (index >= 0 && index < this.data[group].length) {
return this.data[group][index];
}
else {
return null;
}
},
remove: function(group, value) {
if (!this.containsGroup(group)) {
return -1;
}
var index = this.data[group].indexOf(value);
this.data[group].splice(index, 1);
return index;
}
};
然后使用它:
// An empty DataStore:
var data = new DataStore();
data.add("group", "value");
data.containsGroup("group"); // returns true
data.contains("group", "value"); // returns true;
data.forEach(function(value, index, group) {
console.log(group + "[" + index + "] = " + value);
});
// Seed the data store with values:
var data2 = new DataStore({
foo: ["bar", "baz"]
});
data2.contains("foo", "baz"); // returns true;
你的意思是写这样的东西吗?它创建一个对象。如果键不存在,则会添加一个数组作为值。然后将第二个参数添加到数组中。
var obj = {};
function add(group, to_add) {
if (!obj[group]) obj[group] = [];
obj[group].push(to_add);
}
add("some_group","something");
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)