Javascript 基础知识4 Odin从数组中移除语法问题? const removeFromArray=函数(firstArray,…toRemove){ 让modifiedArray=[…firstArray]; for(设i=0;i循环>而不是 < 循环:(conthof value const)。{let index=firstArray.indexOf(value);if(index!==-1){firstArray.splice(index,1);}(您可以在我的新书中了解for of循环;在我的个人资料中的链接。)如果firstArray是[1,2,3,1,2,3],那么您想做什么可能也值得一问和toRemove包含1、2或3。您当前的方法只会删除第一次出现的代码。我已修复代码并使其正常工作,我将添加到我的主要帖子中,但我仍然不确定原因[I]必须连接到才能运行?我会查看你的书籍!很抱歉theOdinProject很快超过了我的技能,因为我现在不知所措。lol。谢谢我会继续学习。编辑main以添加测试,感谢快速响应!谢谢我非常感谢。如何声明我?大多数时候我只看到它是u在“for”循环中,sed也是如此,并且认为这很好。只是“让i=0”而不是“i=0”?。这是否意味着我可以删除所有附加的[i]而不产生任何后果?再次感谢,T.J.!@JamesRoss-是的,let(或者var,如果您必须支持过时的环境)。您仍然需要[] > > >但对于循环: > >(conToMeTrimeFor){ index = FiSray.Index Of(value);IF(index!== 1){FrasRay.Price(index,1);}(您可以在我的新书中了解< >的循环:我的配置文件中的链接)。如果firstArray是[1,2,3,1,2,3],那么询问您想要做什么可能也是值得的和toRemove包含1、2或3。您当前的方法只会删除第一次出现的代码。我已经修复了代码并使其正常工作,我会将其添加到我的主要帖子中,但我仍然不确定为什么[I]必须附加到toRemove const removeFromArray = function(firstArray,...toRemove) { let modifiedArray = [...firstArray]; for (i = 0; i < firstArray.length; i++) { if (modifiedArray.includes(toRemove[i])) { modifiedArray.splice(modifiedArray.indexOf(toRemove[i]), 1) } } return modifiedArray; } const removeFromArray = require('./removeFromArray') describe('removeFromArray', function() { it('removes a single value', function() { expect(removeFromArray([1, 2, 3, 4], 3)).toEqual([1, 2, 4]); }); it('removes multiple values', function() { expect(removeFromArray([1, 2, 3, 4], 3, 2)).toEqual([1, 4]); }); it('ignores non present values', function() { expect(removeFromArray([1, 2, 3, 4], 7, "tacos")).toEqual([1, 2, 3, 4]); }); it('ignores non present values, but still works', function() { expect(removeFromArray([1, 2, 3, 4], 7, 2)).toEqual([1, 3, 4]); }); it('can remove all values', function() { expect(removeFromArray([1, 2, 3, 4], 1, 2, 3, 4)).toEqual([]); }); it('works with strings', function() { expect(removeFromArray(["hey", 2, 3, "ho"], "hey", 3)).toEqual([2, "ho"]); }); it('only removes same type', function() { expect(removeFromArray([1, 2, 3], "1", 3)).toEqual([1, 2]); }); }); const removeFromArray = function(firstArray,...toRemove) { let modifiedArray = [...firstArray]; for (let i = 0; i < toRemove.length; i++) { if (modifiedArray.includes(toRemove[i])) { modifiedArray.splice(modifiedArray.indexOf(toRemove[i]), 1) } } return modifiedArray; }; console.log(removeFromArray([3,4,5], 3,5))
问题1)为什么[…firstArray]周围需要括号 因为没有它们,这是一个语法错误。这种形式的扩展表示法仅在数组文字中有效。(对象具有相同的表示法,但其含义不同。)Javascript 基础知识4 Odin从数组中移除语法问题? const removeFromArray=函数(firstArray,…toRemove){ 让modifiedArray=[…firstArray]; for(设i=0;i循环>而不是 < 循环:(conthof value const)。{let index=firstArray.indexOf(value);if(index!==-1){firstArray.splice(index,1);}(您可以在我的新书中了解for of循环;在我的个人资料中的链接。)如果firstArray是[1,2,3,1,2,3],那么您想做什么可能也值得一问和toRemove包含1、2或3。您当前的方法只会删除第一次出现的代码。我已修复代码并使其正常工作,我将添加到我的主要帖子中,但我仍然不确定原因[I]必须连接到才能运行?我会查看你的书籍!很抱歉theOdinProject很快超过了我的技能,因为我现在不知所措。lol。谢谢我会继续学习。编辑main以添加测试,感谢快速响应!谢谢我非常感谢。如何声明我?大多数时候我只看到它是u在“for”循环中,sed也是如此,并且认为这很好。只是“让i=0”而不是“i=0”?。这是否意味着我可以删除所有附加的[i]而不产生任何后果?再次感谢,T.J.!@JamesRoss-是的,let(或者var,如果您必须支持过时的环境)。您仍然需要[] > > >但对于循环: > >(conToMeTrimeFor){ index = FiSray.Index Of(value);IF(index!== 1){FrasRay.Price(index,1);}(您可以在我的新书中了解< >的循环:我的配置文件中的链接)。如果firstArray是[1,2,3,1,2,3],那么询问您想要做什么可能也是值得的和toRemove包含1、2或3。您当前的方法只会删除第一次出现的代码。我已经修复了代码并使其正常工作,我会将其添加到我的主要帖子中,但我仍然不确定为什么[I]必须附加到toRemove const removeFromArray = function(firstArray,...toRemove) { let modifiedArray = [...firstArray]; for (i = 0; i < firstArray.length; i++) { if (modifiedArray.includes(toRemove[i])) { modifiedArray.splice(modifiedArray.indexOf(toRemove[i]), 1) } } return modifiedArray; } const removeFromArray = require('./removeFromArray') describe('removeFromArray', function() { it('removes a single value', function() { expect(removeFromArray([1, 2, 3, 4], 3)).toEqual([1, 2, 4]); }); it('removes multiple values', function() { expect(removeFromArray([1, 2, 3, 4], 3, 2)).toEqual([1, 4]); }); it('ignores non present values', function() { expect(removeFromArray([1, 2, 3, 4], 7, "tacos")).toEqual([1, 2, 3, 4]); }); it('ignores non present values, but still works', function() { expect(removeFromArray([1, 2, 3, 4], 7, 2)).toEqual([1, 3, 4]); }); it('can remove all values', function() { expect(removeFromArray([1, 2, 3, 4], 1, 2, 3, 4)).toEqual([]); }); it('works with strings', function() { expect(removeFromArray(["hey", 2, 3, "ho"], "hey", 3)).toEqual([2, "ho"]); }); it('only removes same type', function() { expect(removeFromArray([1, 2, 3], "1", 3)).toEqual([1, 2]); }); }); const removeFromArray = function(firstArray,...toRemove) { let modifiedArray = [...firstArray]; for (let i = 0; i < toRemove.length; i++) { if (modifiedArray.includes(toRemove[i])) { modifiedArray.splice(modifiedArray.indexOf(toRemove[i]), 1) } } return modifiedArray; }; console.log(removeFromArray([3,4,5], 3,5)),javascript,arrays,function,loops,syntax,Javascript,Arrays,Function,Loops,Syntax,问题1)为什么[…firstArray]周围需要括号 因为没有它们,这是一个语法错误。这种形式的扩展表示法仅在数组文字中有效。(对象具有相同的表示法,但其含义不同。)…不是运算符,而是仅在某些位置(数组文本、对象文本、分解模式、函数参数列表和函数参数列表)定义的语法 问题2)如果[i]用于循环您决定为第一个参数(数组)输入多少次迭代,为什么要将其附加到(toRemove[i]) 不应该,那是不对的。如果数组的长度大于您试图从中删除的内容的数量,因为您要从0移动到 < /COD>循环>而不是 <
…
不是运算符,而是仅在某些位置(数组文本、对象文本、分解模式、函数参数列表和函数参数列表)定义的语法
问题2)如果[i]用于循环您决定为第一个参数(数组)输入多少次迭代,为什么要将其附加到(toRemove[i])
不应该,那是不对的。如果数组的长度大于您试图从中删除的内容的数量,因为您要从0
移动到
,那么它正好起作用。因此,如果该长度等于或大于toRemove
中的条目数,您将看到所有toRemove
的条目(如果firstArray
较长,则为undefined
s)。下面是该代码不起作用的示例:
const removeFromArray=函数(firstArray,…toRemove){
让modifiedArray=[…firstArray];
对于(i=0;i
问题1)为什么[…firstArray]周围需要括号
因为没有它们,这是一个语法错误。这种形式的扩展表示法仅在数组文字中有效。(对象具有相同的表示法,但其含义不同。)…
不是运算符,而是仅在某些位置(数组文本、对象文本、分解模式、函数参数列表和函数参数列表)定义的语法
问题2)如果[i]用于循环您决定为第一个参数(数组)输入多少次迭代,为什么要将其附加到(toRemove[i])
不应该,那是不对的。如果数组的长度大于您试图从中删除的内容的数量,因为您要从0
移动到
,那么它正好起作用。因此,如果该长度等于或大于toRemove
中的条目数,您将看到所有toRemove
的条目(如果firstArray
较长,则为undefined
s)。下面是该代码不起作用的示例:
const removeFromArray=函数(firstArray,…toRemove){
让modifiedArray=[…firstArray];
对于(i=0;i log(removeFromArray([1,2],3,4,1));//应该是[2],实际上是[1,2]
Editing main以添加测试,感谢您的快速响应!我非常感谢。如何声明I?大多数情况下,我只看到它在'for'循环中被如此使用,并认为这太棒了。只需'let I=0'而不是'I=0'。这是否意味着我可以删除[I]T.J.:“谢谢”,“JaveS罗斯-是的,<代码>让(或<代码> var /代码>如果你必须支持过时的环境)。你仍然需要<代码> [/COD]绕过<代码> i>代码>。但是你可以考虑< <代码> > < /COD>循环>而不是<代码> < <代码>循环:<代码>(conthof value const)。{let index=firstArray.indexOf(value);if(index!==-1){firstArray.splice(index,1);}(您可以在我的新书中了解for of
循环;在我的个人资料中的链接。)如果firstArray
是[1,2,3,1,2,3],那么您想做什么可能也值得一问
和toRemove
包含1
、2
或3
。您当前的方法只会删除第一次出现的代码。我已修复代码并使其正常工作,我将添加到我的主要帖子中,但我仍然不确定原因[I]必须连接到才能运行?我会查看你的书籍!很抱歉theOdinProject很快超过了我的技能,因为我现在不知所措。lol。谢谢我会继续学习。编辑main以添加测试,感谢快速响应!谢谢我非常感谢。如何声明我?大多数时候我只看到它是u在“for”循环中,sed也是如此,并且认为这很好。只是“让i=0”而不是“i=0”?。这是否意味着我可以删除所有附加的[i]而不产生任何后果?再次感谢,T.J.!@JamesRoss-是的,let
(或者var
,如果您必须支持过时的环境)。您仍然需要[]<代码> > <代码> > <代码> >但对于循环:<代码> > <代码> >(conToMeTrimeFor){ index = FiSray.Index Of(value);IF(index!== 1){FrasRay.Price(index,1);}(您可以在我的新书中了解< <代码> >的循环:我的配置文件中的链接)。如果firstArray
是[1,2,3,1,2,3],那么询问您想要做什么可能也是值得的
和toRemove
包含1
、2
或3
。您当前的方法只会删除第一次出现的代码。我已经修复了代码并使其正常工作,我会将其添加到我的主要帖子中,但我仍然不确定为什么[I]必须附加到toRemove
const removeFromArray = function(firstArray,...toRemove) {
let modifiedArray = [...firstArray];
for (i = 0; i < firstArray.length; i++) {
if (modifiedArray.includes(toRemove[i])) {
modifiedArray.splice(modifiedArray.indexOf(toRemove[i]), 1)
}
}
return modifiedArray;
}
const removeFromArray = require('./removeFromArray')
describe('removeFromArray', function() {
it('removes a single value', function() {
expect(removeFromArray([1, 2, 3, 4], 3)).toEqual([1, 2, 4]);
});
it('removes multiple values', function() {
expect(removeFromArray([1, 2, 3, 4], 3, 2)).toEqual([1, 4]);
});
it('ignores non present values', function() {
expect(removeFromArray([1, 2, 3, 4], 7, "tacos")).toEqual([1, 2, 3, 4]);
});
it('ignores non present values, but still works', function() {
expect(removeFromArray([1, 2, 3, 4], 7, 2)).toEqual([1, 3, 4]);
});
it('can remove all values', function() {
expect(removeFromArray([1, 2, 3, 4], 1, 2, 3, 4)).toEqual([]);
});
it('works with strings', function() {
expect(removeFromArray(["hey", 2, 3, "ho"], "hey", 3)).toEqual([2, "ho"]);
});
it('only removes same type', function() {
expect(removeFromArray([1, 2, 3], "1", 3)).toEqual([1, 2]);
});
});
const removeFromArray = function(firstArray,...toRemove) {
let modifiedArray = [...firstArray];
for (let i = 0; i < toRemove.length; i++) {
if (modifiedArray.includes(toRemove[i])) {
modifiedArray.splice(modifiedArray.indexOf(toRemove[i]), 1)
}
}
return modifiedArray;
};
console.log(removeFromArray([3,4,5], 3,5))