2

このRegExp.exec関数は、ハイブリッド配列のようなものを返します。配列ですが、プロパティがあります。

console.log(/d(b+)(d)/i.exec("cdbBdbsbz"));
// => ["dbBd", "bB", "d", index: 1, input: "cdbBdbsbz"]

result[0]result[1]result.indexresult.inputなどを呼び出すことができます。

自分で作るにはどうすればいいですか?

[0, 1, "a": 1]は明らかに構文エラーであり、プロパティにインデックスを付けてアクセスできるオブジェクトを提供しますが、によって{"0": 1, "1": 1, "a": 1} 返されるものexecは異なります。

私はそれをやってみました__proto__

arr = [1, 2, 3];
arr.__proto__.a = 1 // arr.a is 1 now

しかしconsole.log、 の結果で実行し​​たときのようにプロパティを表示しないexecので、それでも同じではないと思います。

4

4 に答える 4

5

簡単です。JavaScript の配列は単なるオブジェクトであり、好きなプロパティをアタッチできます。

var test = ["foo","bar","baz"];
test.index = 1;
test.input="foobarbaz";
console.log(test);

これconsole.logは、 によって返されるものと同じように見えますregex.exec

実際の例: http://jsfiddle.net/9rCmJ/

于 2012-11-26T10:24:12.187 に答える
3

これですか?

var arr = [0, 1];
arr.a = 1;
于 2012-11-26T10:21:14.423 に答える
3

配列もオブジェクトなので、プロパティを直接設定できます。

var myArray = ['a', 'b'];
console.log(typeof myArray); // 'object'
myArray.say = 'hi';
于 2012-11-26T10:23:47.070 に答える
3

次の 2 つの手順で行います。

var a = [1, 2, 3];
a.test = "Hello world";
于 2012-11-26T10:24:29.597 に答える