如何在 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中使作为数组元素的对象为空[重复]