试图按空间分割数组元素

时间:2017-04-22 03:20:29

标签: javascript arrays split

我很困惑为什么这个代码的结果名称[0]等于“f”而不是“foo”。我认为当我通过''分裂方法时,“foo”就是结果。

var ar = [];
ar[0] = "foo bar";
ar[1] = "dumdumdum";

var name = ar[0].split(' ');
console.log(name[0]);

4 个答案:

答案 0 :(得分:4)

"名称"指的是window.name并且正在使用中。  所以你的数组变成了一个字符串。

使用另一个变量,例如array2

var ar = [];
ar[0] = "foo bar";
ar[1] = "dumdumdum";

var name2 = ar[0].split(' ');
console.log(name2[0]);

答案 1 :(得分:4)

  • 变量name在浏览器中保留。如果您要进入开发人员控制台(单击f12),并键入window.name,您会看到它会为您提供""或其他字符串结果。

  • 您之前的代码ar[0].split(' ');将返回以下数组:

    [
       "foo",
       "bar"
    ]
    
  • 但浏览器强行将其转换为字符串,因为您试图更改其保留变量的typeof ;浏览器对您感到生气。 ,因此字符串值为"foo,bar"。但是,您可能会在不同的浏览器上获得不同的结果。

  • 对字符串值name[0]执行"foo,bar"获取字符串的第一个字母f

答案 2 :(得分:3)

您应该避免使用name作为变量,因为这是现有的JavaScript内置对象,属性和方法。将变量name重命名为其他任何内容后,您的代码应该可以运行,请检查代码。

您的var name = ar[0].split(' ');会返回一个子字符串数组。

var ar = [];
ar[0] = "foo bar";
ar[1] = "dumdumdum";

var changeThisVariableName = ar[0].split(' ');  
console.log(changeThisVariableName[0]);

答案 3 :(得分:3)

将它包装在一个函数中,你会得到确切的结果,因为name引用window.name

(function () {
    var ar = [];
    ar[0] = "foo bar";
    ar[1] = "dumdumdum";

    var name = ar[0].split(' ');
    console.log(name[0]);
})()