JavaScript的。告诉我为什么我不能在索引j的数组中更改索引i处的元素

时间:2015-06-06 19:59:29

标签: javascript

这不起作用,它超出了我的范围。这可能是我浏览器中的错误吗?使用Chrome版本43.0.2357.81 m

var array = ['test', 'this'];

array[0][0] = 'T';

console.log(array);

// expected result ["Test", "this"];
// actual result ["test", "this"]

http://jsfiddle.net/hdh3v5vx/

这也不起作用。

array.forEach(function(value, index, a) {
    a[index][0] = value[0].toUpperCase();
});

2 个答案:

答案 0 :(得分:1)

我们无法处理字符串的索引。但是,您可以替换整个字符串(array [0] ='Test')或执行以下操作:

var firstString = array[0].split('');
firstString[0] = 'T';
array[0] = firstString.join('');

如果您希望将不同单词的第一个字母大写,我建议您编写辅助函数来执行此操作。

答案 1 :(得分:0)

你不能像这样修改 String ,它是一个原始的

  

如果有人可以提供标准的摘录,那就太棒了。

逻辑在§8.7.2 of the ES5 spec中描述,特别是4.a。

  

如果HasPrimitiveBase(V)false,则将put设为base的[[Put]]内部方法,否则设为下面定义的特殊[[Put]]内部方法。

然后特殊[[Put]]的注释(如果 HasPrimitiveBase(V)返回true,如果基值是布尔值,字符串或数字。

  

在上述方法之外无法访问步骤1中可能创建的对象

即。通过设置你创建一个具有属性集的新对象,但是这个对象不是 String 你有

的引用