1

これは w3schools からコピーしたコードです。コードは異なりますが、この簡略化されたコーディングでも問題が発生します。

<!DOCTYPE html>
<html>
<body>

<p id="demo">Click the button to create an array, then display it's length</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction()
{
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var foods = ["steak","pizza","bread","fruits"];
var x=document.getElementById("demo");
var y=foods[3];
x.innerHTML= y.length;
}
</script>

</body>
</html>

するとx.innerHTML= fruits.length;、取得4したいものが返されます。

でも電話したら

var y=foods[3];
x.innerHTML= y.length;

6単語の長さはわかります"fruits"が、配列の長さが必要ですfruits

どうすればいいですか?

私はjQueryを使用していますが、それが何かに影響するかどうかはわかりません。どこかに括弧や括弧を追加する必要がありますか?

4

5 に答える 5

3

myVar変数 ( ) に別のオブジェクト ( ) のプロパティの名前が含まれている場合 (およびその場合のみmyObj) を使用できます。

myObj[myVar]

そのプロパティにアクセスします。

この場合、fruits配列は単なる通常のローカル変数であるため、間接的にアクセスする方法はありません (眉をひそめたeval関数を除く)。

もちろん、 を使用fruits.lengthしてその長さを直接見つけることもできます。

より良い解決策は、配列ではなく、食品のネストされたオブジェクトです。

var foods = {
    fruits: [ "Banana", "Orange", "Apple", "Mango" ],
    steak: [ ... ],
    pizza: [ ... ],
    bread: [ ... ]
};

その時点で、上記の構文を使用して次のように記述できます。

var myType = 'fruits';
var count = foods[myType].length;
于 2013-01-20T20:20:44.043 に答える
2

fruits変数識別子と文字列の違いについて、大きな誤解があるようです"fruits"

自分が何をしているのかをよく理解できるように、コードを一緒に説明しましょう。


  • var fruits = ["Banana", "Orange", "Apple", "Mango"];

すべての文字列fruitsである4つの要素の配列を識別するという名前の変数があります。その配列を使用して次のことを行うことができます。

alert(fruits.length); // 4
alert(fruits[0]); // Banana
alert(fruits[3]); // Mango
alert(fruits); // Banana, Orange, Apple, Mango

  • var foods = ["steak","pizza","bread","fruits"];

foods4つの要素の配列を識別するという名前の変数があります。これもすべて文字列です。もう一度、次のことを行うことができます。

alert(foods.length); // 4
alert(foods[0]); // steak
alert(foods[3]); // fruits
alert(foods); // steak, pizza, bread, fruits

  • あなたは果物を数えようとしますfoods[3].length

alert(fruits)実行すると、が表示されたことに注意してくださいBanana, Orange, Apple, Mango。そして、私たちがやったときalert(foods[3])、それは表示されfruitsました。これはあなたにヒントを与えるはずです:あなたが名前を付けた配列fruitsと文字列"fruits"は2つの異なるものです!

そのfoods[3].lengthため、の長さは6であるため、"fruits"は6です。


解決

編集:Altiniakの答えを確認してください。長くて有効な説明のために、残りの投稿は残しておきます。使用するという考えは、使用するwindowよりもほとんど悪かったeval()...

于 2013-01-20T20:33:00.593 に答える
2

多分あなたが欲しいのは

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var foods = ["steak","pizza","bread", fruits];

fruits文字列のfoods代わりに配列への参照を格納しているため、このようにコードが機能します"fruits"

于 2013-01-20T20:17:21.607 に答える
1

以下では:

var y=foods[3];
x.innerHTML= y.length;"

foods配列の 4 番目の要素を変数に割り当てていyます。これは文字列 "fruits" です。配列の長さが必要な場合は、次のようにします。

x.innerHTML = foods.length;

編集:食品配列の長さだけが必要で、果物配列を食品変数に保存しないと仮定しています(必要な場合は、ギャビーの答えでそれが得られます)

于 2013-01-20T20:13:24.643 に答える
0

私はあなたが望むものを手に入れることを願っています. 「果物」という単語があり、そこから という名前の var の内容を取得したいと思いますよfruitsね?

それは を使用して行うことができますeval

var fruitlen = eval('fruits').length;

これはあなたが望んでいたものですか?

于 2013-01-20T20:20:00.670 に答える