Javascript 参数化函数

Javascript 参数化函数,javascript,arrays,json,function,parameters,Javascript,Arrays,Json,Function,Parameters,我有以下代码: <!DOCTYPE html> <html> <body> <h2>JSON Array Test</h2> <p id="outputtext"></p> <script language="javascript" type="text/javascript"> var arrayinput = { collection:[ {firstAttr:"XXXA",sec

我有以下代码:

<!DOCTYPE html>
<html>
<body>

<h2>JSON Array Test</h2>

<p id="outputtext"></p>

<script language="javascript" type="text/javascript">
var arrayinput = {
    collection:[ 
{firstAttr:"XXXA",secAttr:"13156161",lastAttr:"01" }, 
{firstAttr:"XXXB",secAttr:"11153325",lastAttr:"02"  }, 
{firstAttr:"XXXC",secAttr:"14431513",lastAttr:"03"  },  
{firstAttr:"XXXC",secAttr:"13312163",lastAttr:"01"  }]};



var outputElement = document.getElementById("outputtext");

function arrayscanner(arrayvar, container, scanvar){
arrayvar.container.filter(function(item) {

  return item.lastAttr = scanvar;

    })};


var filteredArr = new Array();  
filteredArr = arrayscanner("arrayinput", "collection", "01");



for (var i=0; i<filteredArr.length; i++) {
outputElement.insertAdjacentHTML("beforeend", item.firstAttr + " " + item.secAttr + ", ");
};

</script>

</body>
</html>
我正在尝试使用该函数,以便与参数一起重用。 我需要给函数提供数组名、容器名和扫描的值。 输出可以是一行


我哪里做错了

要将容器设置为对象属性,不能使用点表示法。改用括号表示法:

function arrayscanner(arrayvar, container, scanvar){
  arrayvar[container].filter(function(item) {

  return item.lastAttr = scanvar;

})};
此外,在运行函数时,请将实际数组作为参数传递,而不是带有数组名称的字符串。最后,您不会从arrayscanner函数返回任何内容。这有助于在编写代码时排除故障,如果一小部分代码不起作用,就不应该继续编写更多的代码。我添加了几个console.logs来帮助您了解哪些地方可以解决这些问题

您会注意到,我找到了三个不同的问题,而代码实际上仍然没有附加到HTML中。在堆栈溢出时,您需要隔离自己遇到的单个问题。你不应该在不知道代码失败的地方发布代码

定位单个失败点不仅有助于在此处发布,而且也是一项关键的编程技能

function arrayscanner(arrayvar, container, scanvar){
  arrayvar[container].filter(function(item) {

  return item.lastAttr = scanvar;

})};