gpt4 book ai didi

javascript - 数组检查后跟 forEach()

转载 作者:行者123 更新时间:2023-11-29 16:11:59 24 4
gpt4 key购买 nike

现在我越来越频繁地使用 javascript 进行编程,我经常遇到一个任务,我想知道是否可以更优雅地处理它。

它是关于检查一个变量,values 说,是否是一个 Xs 的数组,或者更确切地说只是一个 X,紧接着是对其或其元素的迭代。(X 是对象、字符串、数字……任何东西——数组除外)。

特别是在处理 xml 或 json 文件时,单个 X 未包含在 [ ] 中以使其成为 1 元素数组,如果我不小心,我的代码会中断。

我现在是这样处理的:

if (!(values instanceof Array)) values = [values]
values.forEach(function(value){/*do stuff with value*/});

现在,我已经编写了一个函数来处理这个问题,

function arrayIfNot(arr) {return (arr instanceof Array) ? arr : [arr];}

我可以用作

arrayIfNot(values).forEach(function(value){/*do stuff with value*/});

但由于这是一项如此常见的任务,如果没有通用的快捷方式或库函数(jQuery?)来执行此操作,我会感到很惊讶。

谢谢!


编辑:

我想我可以像这样扩展原型(prototype)(没试过):

Array.prototype.toArray = function () {return this;};
String.prototype.toArray = function () {return [this];};
...

这样我就可以做

values.toArray().forEach(function(value){/*do stuff with value*/});

但我总是被警告不要扩展原型(prototype)。你怎么认为?

再次感谢!

最佳答案

就我个人而言,我采用了这个习惯用法:

[].concat(a)

这利用了 concat 的行为,即如果它的参数是一个标量,它只是将它添加到数组中;如果它是一个数组,它会添加它的每个元素。

关于javascript - 数组检查后跟 forEach(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25148399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com