0

という配列があり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);asの出力が得られますOne

2つの値を追加すると、 console.log(arr);asの出力が得られますOne,Two(ただし、長さは1として出力されます)

どうしてこれなの ?どうすればこれを解決できますか。

アップデート

checkBox: function (val) {

var arr=[];
arr.push(val.name);
console.log(arr.length);
console.log(arr);

} 
4

3 に答える 3

3

その関数を呼び出すたびに、配列を再インスタンス化しています。したがって、現在の値のみが含まれます。次を試してください。

var arr      = [],
    checkbox = function(val) {
        arr.push(val);
        console.log(arr.length);
    };

checkbox('hello');
checkbox('moto');
于 2012-08-23T14:53:34.847 に答える
2

おそらく、文字列または配列をその配列にプッシュしています!

以下の作品:

arr.push("one","two"); // -> arr =["one","two"]

これも機能しますが、配列には要素を 1 つだけ入れます

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);
于 2012-08-23T14:49:21.740 に答える
1

配列に 2 つの要素を追加すると、一度に 1 つずつ追加するか、グループで追加するかに関係なく、その長さプロパティが常に適切に更新されます。

長さの不一致を得る唯一の方法は、2 つの値を配列または単一の文字列として追加する場合です。この場合、元の配列には 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

http://jsfiddle.net/EcHtU/

于 2012-08-23T14:50:06.050 に答える