查找第一个数组值,然后使用另一个数组中的值更改它们

时间:2015-12-11 21:01:36

标签: javascript

第一个数组

var danu = ["nu", "da", "nu", "da", "da", "da", "da", "da", "da", "nu", "nu"];

第二个数组

var abc2 = ["2", "3", "2", "3", "3", "2", "2"];

我想替换所有" da"从第一个数组与第二个数组1的值1,所以我会得到

["nu", "2", "nu", "3", "2", "3", "3", "2", "2", "nu", "nu"];

我只想在Javascript中修复。 我尝试使用循环metod

for (i=0; i<danu.length; i++) {
if (danu[i] == "da") {
 danu[i] = abc2[i];
}
}

但我最终得到了这个数组

["nu", "3", "nu", "3", "3", "2", "2", undefined, undefined, "nu", "nu"]

3 个答案:

答案 0 :(得分:2)

您可以使用.mapdanu数组中的每个项目应用更改。然后有一个c计数,在找到"da"时递增。

danu = ["nu", "da", "nu", "da", "da", "da", "da", "da", "da", "nu", "nu"];
abc2 = ["2", "3", "2", "3", "3", "2", "2"];

c = 0;

newArr = danu.map(function(e,i){
    if(e == 'da') return abc2[c++];
    return e;
});

console.log(newArr);

答案 1 :(得分:1)

只需使用Array.prototype.reduce()

&#13;
&#13;
$array = array(
    "cid"=>"1-category-title",
    "slug"=> "100-article-title",
    "page_id" => 5
);

$string = "products/{:cid}/{:slug}";

$string = str_replace("{:cid}",$array['cid'], $string);
$string = str_replace("{:slug}",$array['slug'], $string);
if(!empty($array['page_id'])) $string .= "?page_id=".$array['page_id'];

echo $string;
&#13;
&#13;
&#13;

答案 2 :(得分:0)

假设第二个数组的长度等于&#34; da&#34;在第一个数组中,代码看起来像:

var j = 0;
for(int i; i<danu.length; i++){
    if(danu[i] === "da"){
        danu[i] = abc2[j];
        j = j + 1;
    }
}

但是,如果第二个数组的长度不同,则递增j可能会使abc2超出范围。根据您实际想要实现的目标,您需要一个不同的策略。