[英]JavaScript equivalent of PHP $array[$i][]
我在JavaScript中創建多維數組時遇到問題。
PHP代碼如下所示:
<?php
$matches = array(1, 2, 3, 4, 4, 4, 6, 6, 2, 3);
foreach($matches as $match) {
$levels[$match][] = $match;
}
print_r($levels);
?>
$ levels的print_r:
levels[1][0] = 1
levels[2][0] = 2
levels[3][0] = 3
levels[4][0] = 4
levels[4][1] = 4
levels[4][2] = 4
levels[6][0] = 6
levels[6][1] = 6
levels[2][1] = 2
levels[3][1] = 3
我在JavaScript中創建相同數組時遇到問題。
<script>
var levels = [];
$([1, 2, 3, 4, 4, 4, 6, 6, 2, 3]).each(function(key, value) {
levels[value][] = value;
});
</script>
有人可以幫我用JavaScript創建相同的數組嗎?
如果沒有數組,JavaScript不會神奇地創建數組。 您必須自己創建它。 所以這就像
$([1, 2, 3, 4, 4, 4, 6, 6, 2, 3]).each(function(key, value) {
if (levels[value] == null) {
levels[value] = [];
}
levels[value].push(value);
});
Felix的回答很好而且可讀,我只想向您介紹幾個有用的習慣用法。
與php不同,javascript ||
(布爾OR)運算符,盡管其名稱不返回布爾值,但返回第一個非偽操作數。 所以當你寫
a = thing || otherThing
如果thing
為假(= null, undefined, 0, empty string
) null, undefined, 0, empty string
則結果將為otherThing
。 因此像這樣檢查
if(!foo)
foo = bar
可以寫得更簡潔
foo = foo || bar
如果foo
是真實的,則僅將foo
分配給foo
(無操作),否則foo
成為bar
。
應用於您的問題,它將看起來像這樣:
levels[value] = levels[value] || [];
levels[value].push(value);
levels[value] = (levels[value] || []).concat(value);
這不一定更具可讀性或效率,只是一些值得了解的知識。
var levels = [];
var orgArray = [1, 2, 3, 4, 4, 5, 6, 2];
for (var i = 0; i < orgArray.length; i++) {
var value = orgArray[i];
if (levels[value] === undefined)
levels[value] = []
levels[value].push(value);
}
//Print
for (var j = 0; j < levels.length; j++)
if (levels[j])
for (var k = 0; k < levels[j].length; k++)
console.log("levels[" + j + "][" + k + "] = " + levels[j][k]);
這有點矯kill過正,但我想您會明白的。 不要忘記檢查您的元素是否存在
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.