Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中使用函数编程向数组添加元素_Javascript_Arrays_Functional Programming - Fatal编程技术网

如何在JavaScript中使用函数编程向数组添加元素

如何在JavaScript中使用函数编程向数组添加元素,javascript,arrays,functional-programming,Javascript,Arrays,Functional Programming,在这里输入代码我仍在试图了解函数式编程范例是如何工作的。我有一个零件名称数组,如果它们符合条件,我想向数组中添加更多名称。如何以功能性的方式添加元素?谢谢你的帮助 编辑: 这是非常快速的反馈。 目前我没有一个数组,只有一个部件名列表,如果它们符合条件,我想将其放入数组中。不确定这是否会让事情变得更糟,但零件本身将是具有名称、成本和零件号等的对象 编辑:这就是我最终想到的。不确定它是否是最好的,但它目前正在发挥作用。请随时告诉我哪里可以改进。我真的很想了解我们做事的方式和原因背后的逻辑 funct

在这里输入代码我仍在试图了解函数式编程范例是如何工作的。我有一个零件名称数组,如果它们符合条件,我想向数组中添加更多名称。如何以功能性的方式添加元素?谢谢你的帮助

编辑: 这是非常快速的反馈。 目前我没有一个数组,只有一个部件名列表,如果它们符合条件,我想将其放入数组中。不确定这是否会让事情变得更糟,但零件本身将是具有名称、成本和零件号等的对象

编辑:这就是我最终想到的。不确定它是否是最好的,但它目前正在发挥作用。请随时告诉我哪里可以改进。我真的很想了解我们做事的方式和原因背后的逻辑

function isGroupTag(arr) {
    return arr.nodeName === "Group";
}

function makePartObject(xml) {
    return {
        rsn : getInnerHTMLValueOfChildren(xml, "MTR_COMP.RSN"),
        partNumber : getInnerHTMLValueOfChildren(xml, "MTR_COMP.PART_NO"),
        niin : getInnerHTMLValueOfChildren(xml, "MTR_COMP.NIIN"),
        fsc : getInnerHTMLValueOfChildren(xml, "MTR_COMP.FSC"),
        cost : getInnerHTMLValueOfChildren(xml, "MTR_COMP.COST")
    }
}

function getReport(xml, reportNumber) {
    report = xml.children[0].children[reportNumber].children[1].children[1].children[0];
    let partReport = report.children[1];
    // Create a part Array
    let arr = Array.from(report.children);
    // Filter out header and footer part of array
    let parts = arr.filter(isGroupTag);
    let partList = parts.map(function (x) { return makePartObject(x, partReport)});
}
你有这个吗

const partList = "tire, engine, chassis, transmission"
如果是的话,那么我会

创建所有零件的阵列:

const parts = partList.split(", ");
并筛选该列表:

const filteredParts = parts.filter((part) => {return criteria.includes(part)});

你能展示代码吗?我可能错了,但这个问题感觉有点像你误解了函数式编程。基本操作仍然是一样的,不同之处在于使用函数并链接以代替类。您指的是不变性原则。如果更改数组中的条目,那么它应该返回一个新数组(使用map/filter/reduce)。如果你只是在现有的数组中添加新的条目就可以了。请注意,“添加到数组”和“函数式编程”是相互排斥的:你永远不会在FP中修改某些内容。函数式语言(即,不是JavaScript)使用结构共享来减少将旧数据结构中的所有内容复制到新数据结构中的开销,从而使之成为可能。@JaredSmith您完全正确。我对函数式编程非常陌生,我正在努力理解它。我想可能我的措辞不准确,我试图用函数式编程来构建一个数组,但并没有添加太多内容。谢谢你的帮助。我真的很喜欢这个。我现在要试试这个,让你知道它是否有效。