我有一个工作函数(JSFiddle).在整个脚本中的许多场合,该函数按顺序运行.在这些情况下,我想整合很多重复的代码.
理想情况下更改代码如下:
functionName("First_item") +
functionName("Second_item") +
functionName("Third_item") +
Run Code Online (Sandbox Code Playgroud)
对于这样的事情:
functionName("First_item", "Second_item", "Third_item");
Run Code Online (Sandbox Code Playgroud)
该函数将针对列表中的每个项运行,因此结果相同但代码更加优雅和可维护.
笔记:
Amit Joki的回答请注意我可以使用参数.当我实现代码时,修改后的函数(JSFiddle)只返回output第一个参数/ item 的字符串.
Vanice的回答指出了最终的解决方案.
outputfor循环中的字符串(使用+=),从所有参数/项的输出中创建一个字符串.returnfor循环的外部来返回连接的输出.非常感谢大家的时间和帮助.对此,我真的非常感激!
我是 javascript 新手,不太了解 push() 方法的工作原理。
我有两个空数组,row 和 newData。以及输出非常不同的两段代码:
for (i = 1; i <= 10 ; i++) {
row[0] = i;
newData.push(row);
}
Run Code Online (Sandbox Code Playgroud)
导致 newData == [10,10,10,...,10],我觉得这非常令人惊讶,并且
for (i = 1; i <= 10 ; i++) {
newData.push(i);
}
Run Code Online (Sandbox Code Playgroud)
结果 newData == [1,2,3,...,8,9,10] 这是预期的结果。
但我不明白为什么当第二个循环按预期工作时,第一个循环的每次迭代似乎都用最后一个元素替换 newData 的每个元素?
谢谢!
function myFunc(theObject) {
theObject = {make: "Ford", model: "Focus", year: 2006};
}
var mycar = {make: "Honda", model: "Accord", year: 1998};
var x = mycar.make; // returns Honda
myFunc(mycar);
var y = mycar.make; // still returns Honda
Run Code Online (Sandbox Code Playgroud)
为什么myFunc不改变mycar对象?
我是Javascript的新手(以及一般的编程),并且一直在寻找一种使用Javascript函数更改任意数量的aguments值的方法.
这里的答案(函数的JavaScript变量数量)非常有用.我能够用它来创建我需要的两个功能,但是我遇到了第三个功能.
基本上我想将一个可变数量的对象(原始的或更复杂的)传递给一个函数,并让函数改变每个对象的值.
var pants = true;
var house = true;
var hair = {/* lots of stuff */};
var onFire = function() {
for (var i = 0; i < arguments.length; i++) {
arguments[i] = false;
}
};
onFire(pants, house, hair);
Run Code Online (Sandbox Code Playgroud)
控制台输出:
>pants;
true
>house;
true
>hair;
Object
Run Code Online (Sandbox Code Playgroud)
我如何制定这个函数,结果如下:
>pants;
false
>house;
false
>hair;
false
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
编辑:
澄清事情 - 我正在尝试创建一个可重用的辅助函数,它可以更改传入的任何对象的值,false而不是键入:
var a1 = false;
var a2 = false;
...
var a+n = false; …Run Code Online (Sandbox Code Playgroud) 根据这个问题,如果我将全局变量作为参数传递给函数,则该全局变量将成为本地副本。
如果是这样,为什么这个 jfiddle 的行为方式如此?警报dog, cat不应该显示而不仅仅是显示cat吗?
我什至比示例更进一步,专门将全局变量复制到局部变量中,但结果是一样的。我真的很希望能够shift()在保持全局完整的同时进行本地化。
是否可以将全局变量的链接发送到 JavaScript 中的函数? 这个答案说不,但我不敢相信,没有解决方法。
我的意思是类似以下内容。它不起作用,但它可以解释我的意思:
var data_1;
var data_2;
fillValue(data_1,"First");
fillValue(data_2,"Second");
function fillValue(link2GlobalVar, value){
link2GlobalVar = value;
}
console.log(data_1);
console.log(data_2);
Run Code Online (Sandbox Code Playgroud)
如果能在控制台输出就太好了
First
Second
Run Code Online (Sandbox Code Playgroud)
您知道将全局变量发送到函数并在函数中更改它们的技巧吗?
参见小提琴
如何用键转动此数组
> dd
[ 'DeviceName',
'counter1',
'counter2',
'counter3',
'counter4' ]
Run Code Online (Sandbox Code Playgroud)
用对象进入这个对象数组
[
{ data: 'DeviceName' },
{ data: 'counter1' },
{ data: 'counter2' },
{ data: 'counter3' },
{ data: 'counter4' }
]
Run Code Online (Sandbox Code Playgroud)
我试过这个函数,但问题是数据键在它们中都是一样的.
有没有解决的办法?
newdd=function toObject(arr) {
var rv = {};
var a =[];
for (var i = 0; i < arr.length; ++i) {
rv["data"] = arr[i];
a.push(rv);
}
return a;
}
Run Code Online (Sandbox Code Playgroud)
这给了我:
> newdd(dd)
[ { data: 'counter4' },
{ data: 'counter4' },
{ data: 'counter4' },
{ …Run Code Online (Sandbox Code Playgroud) 我觉得这真的很奇怪,我是json通过 http 发送的。
{
"foo":"bar",
"foo2":"bar2",
"name":{
"firstName":"Joff",
"middleName":"Ramirez",
"lastName":"Tiquez"
}
}
Run Code Online (Sandbox Code Playgroud)
在服务器上我正在执行这些命令:
var data = req.body; // the json from http
console.log('data', data); // the data now has the req.body's value
delete data.name; // <-- here's the delete
console.log('data', data); // the name object will obviously be deleted
console.log('req.body', req.body); // the name on the req.body was deleted too. Wtf?
Run Code Online (Sandbox Code Playgroud)
req.body.name因此,当我尝试在程序的其他部分使用 时,name现在已经消失了。那是delete应该如何工作吗?
var x = [1, 2, 3, 4, 5, 6];
function change1(y) {
y[0] = 7;
y[1] = 8;
y[2] = 9;
y[3] = 10;
y[4] = 11;
y[5] = 12;
}
change1(x);
console.log(x);
var z = [1, 2, 3, 4, 5, 6];
function change2(y) {
y = [7, 8, 9, 10, 11, 12];
}
change2(z);
console.log(z);Run Code Online (Sandbox Code Playgroud)
输出:
7,8,9,10,11,12 1,2,3,4,5,6
Run Code Online (Sandbox Code Playgroud)
我无法理解上面的代码为什么change1()函数可以改变传递的数组而change2()函数不能.
为什么断线不起作用?
谢谢
向阅读本文的任何人致以问候。我想先说一下,我对 Svelte 和整个组件框架都很陌生。这实际上是我开始学习的第一个框架。
我一直在学习一个教程,在教程的某些部分,我喜欢制作一些小东西,其中包含我刚刚学到的内容,以进一步熟悉这些材料。
最近,我开始学习组件和组件属性,并决定创建一个应用程序,该应用程序在表单中接收各种输入,然后通过将其记录到控制台来提交该表单。
正是在这样做的过程中,我注意到一些有趣的行为,我设法在为了编写这个问题而制作的单独应用程序中复制这些行为。
<script>
import Name1 from "./lib/Name1.svelte";
import Name2 from "./lib/Name2.svelte";
const obj = {
fullname: {
fName: '',
lName: ''
},
fName: '',
lName: ''
}
</script>
<main>
<Name1 fullName = {obj.fullname} />
<br><br>
<Name2 fName = {obj.fName} lName = {obj.lName} />
<br><br>
<button on:click={() => (console.log(obj))}>Log Data</button>
</main>
<style>
:root {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
main {
text-align: center;
padding: 1em;
margin: …Run Code Online (Sandbox Code Playgroud)