.match数组值未定义

时间:2015-08-14 06:00:44

标签: javascript arrays methods match

我在字符串上调用.string方法并将其设置为等于另一个变量。它返回一个带有[match value, index, and input]的数组。 当我尝试引用数组中的第二个元素时,它会以未定义的形式返回。有人能告诉我为什么会这样吗?继承我的代码:

var str = "hello world"
var matchArray = str.match("ell");

=>matchArray  = ["ell",index:1,input:"hello world"]

var index = matchArray[1];
console.log(index);

=>undefined

提前致谢。

2 个答案:

答案 0 :(得分:1)

var str = "hello world"
var matchArray = str.match("ell");

matchArray是一个Array,但在javascript中我们知道我们可以在数组中设置属性以及它是一个对象。

在上面的例子中,matchArray只有数组中的数学。但其他属性如indexinput都在对象中。

如果你console.dir(matchArray),你也可以获得这些属性。

因此,要访问这些属性,请使用matchArray.indexmatchArray.input

等对象的表示法

答案 1 :(得分:0)

JavaScript是一种有趣的语言。虽然matchArray 对象确实是一个数组,但在JS中,您可以向任何对象添加新成员。因此,matchArray是一个长度为1的数组,但它也有成员索引和输入。试试这个:

x="test"
y="test"
if [[ "${x}" = "${y}" ]]; then
    echo "Equals"
else
    echo "No equals"
fi

我们可以从头开始定义类似的对象:

...
console.log(matchArray.index);
console.log(matchArray.input);