使用另一个数组从数组中查找信息

时间:2017-02-20 01:55:47

标签: javascript arrays

我目前遇到这个问题,我似乎无法找到特定于我的问题的答案。

 function handleData( responseData ) {

    // Do what you want with the data
    console.log(responseData);
}

$.ajax({
    url: "hi.php",
    ...
    success: function ( data, status, XHR ) {
        handleData(data);
    }
});

我希望使用array2中的信息在array1中找到。

输出

的示例
  

Array1有item2,位于Array1 [1]

如果有人可以帮助我,谢谢你。

4 个答案:

答案 0 :(得分:2)

Array2.forEach((e) => {
    const indexOfE = Array1.indexOf(e)
    if (indexOfE > -1) {
        console.log(`Array1 has ${e} and is at Array1[${indexOfE}]`)
    }
})

您可以查看forEachindexOftemplate literals,以帮助您了解此代码。

修改

回答评论中的问题,如果你想检查Array1中包含Array2元素作为子串的元素,那么你可以:

Array2.forEach((e) => {
    Array1.forEach((f, i) => {
        if (f.toLowerCase().includes(e)) {
            console.log(`Array1 has ${e} and is at Array1[${i}]`)
        }
    })
})

检查String.prototype.includesthis answer,了解有关在另一个字符串中查找子字符串的详细信息。

答案 1 :(得分:0)

如果你只想知道Array1包含Array2中的一个元素,那么迭代Array2调用每个元素的indexOf:

Array2.map((el => {
    if (Array1.indexOf(el) !== -1) {
        console.log('Array 1 contains ' + el);
    }
}));

答案 2 :(得分:0)

这是代码:

var Array1 = ["item1", "item2", "item3", "item4", "item5"];
var Array2 = ["item2", "item5"];
for (var i = 0; i <Array2.length; i++) {
 if (Array1.indexOf(Array2[i])>-1) {
 console.log("Array1 has "+Array2[i]+" and is at Array1["+Array1.indexOf(Array2[i]) +"]")  
  }
}

答案 3 :(得分:0)

你可以让Ramdajs找到两个数组的交集如下

const Array1 = ["item1", "item2", "item3", "item4", "item5"];
const Array2 = ["item2", "item5"];

const res = R.intersection(Array1, Array2);
console.log(res);

here是代码排斥

使用lodash

可以实现同样的目的
const Array1 = ["item1", "item2", "item3", "item4", "item5"];
const Array2 = ["item2", "item5"];
const res = _.intersection(Array1, Array2)
console.log(res);

here是lodash的jsfiddle。

或者您可以使用数组的includes方法执行相同的操作

const Array1 = ["item1", "item2", "item3", "item4", "item5"];
const Array2 = ["item2", "item5"];
const res = Array1.filter(curr=>Array2.includes(curr));
console.log(res);