我有一个名为arr
的数组。我正在向它添加项目(arr.push(val)
),它将值打印为1(arr.length
) - 当我只添加1个项目时打印1。
但是,当我添加2个值/项(arr.push(val)
)时,我仍然会得到1
而不是2
的结果。
var arr=[];
arr.push(val);
console.log(arr.length);
console.log(arr);
当我添加 1 值时,我得到console.log(arr);
的输出为One
当我添加 2 值时,我得到console.log(arr);
的输出为One,Two
(但长度打印为1)
这是为什么?我该如何解决这个问题。
更新
checkBox: function (val) {
var arr=[];
arr.push(val.name);
console.log(arr.length);
console.log(arr);
}
答案 0 :(得分:3)
每次调用该函数时,都会重新实例化数组。因此它只有当前值。你应该尝试:
var arr = [],
checkbox = function(val) {
arr.push(val);
console.log(arr.length);
};
checkbox('hello');
checkbox('moto');
答案 1 :(得分:2)
您可能正在将字符串或数组推入该数组中!
以下作品:
arr.push("one","two"); // -> arr =["one","two"]
这也可以,但只将一个元素放入数组
arr.push("one,two"); // -> arr =["one,two"] <- the first element is a string "one,two"
这与将字符串推入数组的方式相同:
arr.push(["one","two"]); // arr = [["one","two"]] <- the first element is an array ["one,two"]
如果是字符串,则需要先将其拆分(例如,当它是名称时),然后使用concat()
var a = [];
var name = "John Doe";
var b = name.split(" "); // creates an array ["John","Doe"]
a.concat(b);
答案 2 :(得分:1)
向数组中添加两个元素应该始终正确地更新它的length属性,无论您是一次添加一个元素还是在组中添加它们。
如果将两个值作为数组或单个字符串添加,唯一可以获得长度差异的方法是,在这种情况下原始数组中只有1个元素,并且该元素将是一个数组包含2个元素或单个字符串。
var blah = [];
blah.push('foo');
blah.push('bar');
console.log(blah.length); // 2
var boo = [];
boo.push('foo', 'bar');
console.log(boo.length); // 2
var baz = [];
baz.push(['foo', 'bar']);
console.log(baz.length); // 1