在精确位置替换Javascript数组中的值

时间:2014-05-13 12:32:42

标签: javascript jquery arrays underscore.js lodash

我有两个JavaScript数组。

var arrOne = ["1.", "2.", "3.", "4.", "5."];
var arrTwo = ["3.4", "1.1", "2.3", "1.5", "10", "2.4" , "44"];

对于第一个数组(arrOne)中的每个项目,我想检查第二个数组中的项目数(arrTwo)是否包含以第一个数组的值开头的值。

例如:我将检查arrTwo中有多少项以值" 1开始。"。它应该返回我" 1.1",1.5。

找到这些值后,我想用1.1& 1.5在第一个阵列中。

因此最终输出应如下所示:["1.1", "1.5", "2.3", "2.4", "3.4", "4.", "5."];

我知道如何找到值但不确定要替换值。

2 个答案:

答案 0 :(得分:3)

您可以使用两个循环,检查arrTwo中arrOne元素的索引。如果存在匹配项,请将其添加到最终的值数组中。像这样:

var arr = [];
$.each(arrOne, function (i, val) {
    var valFound = false;
    $.each(arrTwo, function (i, v) {
        if (v.indexOf(val) == 0) {
            valFound = true;
            arr.push(v);
        }
    });
    !valFound && arr.push(val);
});

Example fiddle

仅限原生JS:

var arr = [];
for (var i = 0; i < arrOne.length; i++) {
    var valFound = false;
    for (var n = 0; n < arrTwo.length; n++) {
        if (arrTwo[n].indexOf(arrOne[i]) == 0) {
            valFound = true;
            arr.push(arrTwo[n]);
        }
    };
    !valFound && arr.push(arrOne[i]);
};

Example fiddle

答案 1 :(得分:0)

你可以试试这个:

var arrOne = ["1.", "2.", "3.", "4.", "5."];
var arrTwo = ["3.4", "1.1", "2.3", "1.5", "10", "2.4" , "44"];

var arrResult = [];

for (var i = arrOne.length - 1; i >= 0; i--) {
    for (var x = arrTwo.length - 1; x >= 0; x--) {
        if(arrOne[i] == arrTwo[x].substring(0,arrOne[i].length)) {
            arrResult.push(arrTwo[x])
        }
    };
};

console.log(arrResult);