我正在尝试将每个索引重复一个元素替换为数组的元素。
例如
['12','a','drink','cookie']
成为['0','0','0','0']
我正在学习基本的JavaScript
,并试图弄清楚该如何做。我已经尝试过forEach()
和splice()
,但我始终只获得一个索引(例如['0']
)。我觉得我可以用for
循环来解决这个问题,但是要输入什么呢?下面的代码是我最近的工作,但是没有运行。
function replace()
{
var Word = 'test';
var newWordArray = Array.from(Word);
for (var i = 0; i < newWordArray.length; i++); {
i = '0';
}
}
我希望['0','0','0','0']
作为输出,但是在尝试运行该函数时却未定义。
答案 0 :(得分:1)
您的代码有几个问题:
i = '0'
并没有按照您认为的去做。 i
这里只是一个数字,代表数组中的索引。更改i
不会执行任何操作,因为您不会使用i
本身的值执行任何操作。相反,您需要更改索引i
处的元素。您可以通过执行newWordArray[i] = 0
来实现。这样,您说的是更改数组i
中索引newWordArray
处的元素。
您不会从函数中返回任何内容。为了使函数一旦被调用就被分配一个值,您需要return
所说的值。因此,当您希望函数调用输出(返回)新数组时,需要在函数末尾return newWordArray
。
尽管不是必需的,但我建议您在函数中添加一个名为word
的参数。这样,函数可以接受字符串(或数组)并为您提供所需的输出。
请参见下面的工作示例:
function replace(word) { // accept a word as an input to use in your function
var newWordArray = Array.from(word); // create an array of characters from your inputted word
for (var i = 0; i < newWordArray.length; i++) { // remove ';' colon here
newWordArray[i] = 0; // Set every element (by accessing it using its index 'i') to 0
}
return newWordArray; // output (return) the new array
}
console.log(replace("test")); // input "test" as the word variable
console.log(replace(['12','a','drink','cookie']));
还要注意,Array.from([1, 2, 3])
将返回数组。因此,以上内容对字符串和数组均有效。
或者,要实现与上述相同的目的的另一种方法是使用Array.prototype.fill()
。在这里,我将ES6 arrow functions与destructing assignment一起使用:
[1, 2, 3]
答案 1 :(得分:1)
Nick Parsons ,已经很好地解释了如何更改代码以实现目标,但是,由于您已经在使用Array::from(),因此可以使用mapFn
参数并简化代码,例如:
const replace = (word, replaceVal) => Array.from(word, x => replaceVal);
console.log(replace("word", 0));
console.log(replace("Hello World", 5));
答案 2 :(得分:0)
您只需将其分配给数组中的每个元素:
for (var i = 0; i < newWordArray.length; i++); {
newWordArray[i] = '0';
}
您正在将值分配给迭代器。
答案 3 :(得分:0)
此处的数组映射会缩短您的代码
var Word = 'test';
//var newWordArray = Array.from(Word);
let j=Array.from(Word).map(a=>a='0');
console.log(j)
答案 4 :(得分:0)
Spread语法(ES6)也适用!请务必遵守文档中所述的浏览器兼容性。
function replace() {
const Word = 'test';
const newWordArray = [...Word];
//console.log(newWordArray)
return newWordArray.map(a => a='0')
}
console.log(replace())
答案 5 :(得分:0)
我更喜欢splice和forEach实现这一目标
var contents = ['a','b','c','d'];
document.getElementById('LW').value = contents
contents.forEach(function(element, index) {
contents.splice(index, 1, "0");
});