如何在 Javascript 中使简单的 php 的 foreach 等效? [复制]

Posted

技术标签:

【中文标题】如何在 Javascript 中使简单的 php 的 foreach 等效? [复制]【英文标题】:How to make simple php's foreach equivalent in Javascript? [duplicate] 【发布时间】:2012-09-07 22:05:00 【问题描述】:

可能重复:Loop through array in javascript

我想在javascript中制作相当于php的foreach。因为我不太了解 Javascript 语言,所以我希望有人将这段 PHP 代码重写为 Javascript 代码:

$my_array = array(2 => 'Mike', 4 => 'Peter', 7 => 'Sam', 10 => 'Michael');

foreach($my_array as $id => $name)

     echo $id . ' = ' . $name;

这甚至可以用 Javascript 语言实现吗?

【问题讨论】:

您可以使用for (var item in myObjectHash)for (var i = 0; i < myArray.length; i++) 如果您使用的是实际数组,请不要使用for...in 在最新版本的 JS 中有 forEach 否则你将不得不做一个 for 循环。 【参考方案1】:

在 JQuery 中,$.each 函数类似。

它允许您使用可以访问每个项目的回调函数来迭代数组:

var arr = ["one", "two", "three", "four", "five"];
$.each(arr, function(index, value) 
  // work with value
);

对于纯 Javascript?

for (var key in obj) 
    alert(key + ': ' + obj[key]);

【讨论】:

为了使用额外的库来做一些琐碎的事情,比如循环。【参考方案2】:

因为你存在两种方式。

首先当数据在对象中时(例如它在 my_list 中) 第二,当数据完全在数组中时(例如它是 my_array)

在任何情况下你都可以使用 JavaScript For...In 语句

例子:

<script type="text/javascript" charset="utf-8">
    var data;
    var my_list  = 2:'Mike', 4:'Peter', 7:'Sam', 10:'Michael';
    var my_array = new Array();
    my_array[2]  = 'Mike';
    my_array[4]  = 'Peter';
    my_array[7]  = 'Sam'; 
    my_array[10] = 'Michael';

    data = '';
    for(index in my_list) 
        data += (index+'='+my_list[index]+"\n");
    
    console.log(data);

    data = '';
    for(index in my_array) 
        data += (index+'='+my_array[index]+"\n");
    
    console.log(data);
</script>

在这两种情况下,控制台输出都是:

2=Mike
4=Peter
7=Sam
10=Michael

其实请看http://www.w3schools.com/js/js_loop_for_in.asp

【讨论】:

【参考方案3】:

见下面网址

foreach equivalent of php in jquery?

或者试试看

如果你想迭代一个对象,我会推荐 JavaScript 变体:

for (var key in obj) 
    alert(key + ': ' + obj[key]);

你也可以像这样在 jQuery 中迭代对象: 笔记!除非您认为这种语法更易于维护,否则这样做毫无意义。下面的语法比上面的标准 JavaScript for-loop 的开销要大得多。

$.each(obj, function (key, value) 
    alert(key + ': ' + value);
);

要迭代数组,在标准 JavaScript 中是这样的(假设 arr 是数组):

for (var i = 0, l = arr.length; i < l; i++) 
    alert(i + ': ' + arr[i]);

要在 jQuery 中做,你可以这样做:

$.each(arr, function (index, value) 
    alert(index + ': ' + value);
);

【讨论】:

【参考方案4】:

最近的构造是

a =  2: 'Mike', 4: 'Peter', 7: 'Sam', 10: 'Michael' ;
for(var n in a) 
    console.log(n+'='+a[n]);

【讨论】:

顺便说一句,你有一个对象,其中 OP 有一个数组。除非您知道自己在做什么,否则不应循环访问这样的对象。 @PeeHaa,OP 有一个关键字“数组”,但关联数组几乎不是数组。除非知道自己在做什么,否则不应该做任何事情:) 在 JS 中循环一个对象的时候至少要加上if (a.hasOwnProperty(n))。 :-) +1 - 答案可能对代码的作用有更多的解释,但他的代码准确无误。讨厌的人会讨厌 谢谢,是的,可以解释,但如果我要问,我会自己做一些研究知道答案。另一方面,很明显,代码正在做 OP 的代码正在做的事情:)

以上是关于如何在 Javascript 中使简单的 php 的 foreach 等效? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中使作为数组元素的对象为空[重复]

如何在 MVC 中使文本框可选

如何在 CSS Grid 中使 div 高度等于宽度

关于在 ASP.Net 中使 javascript 对象名称唯一的想法?

如何在 IE7 中使空的锚标记可点击?

如何在 Laravel 5.8 中使 chart.js 动画/增长/活着?