在lodash / es6中搜索嵌套数组

时间:2019-07-03 14:28:20

标签: javascript arrays ecmascript-6

试图在数组数组中搜索值并返回索引。大多数答案是对象数组。所以我想搜索例如22并获得2作为找到值的索引

这是密码笔 https://codesandbox.io/s/lodash-playground-array-pzzhe

const arr = [["a","b"],["f","r"],["r",22,"t"]];
console.log("arr", arr);

4 个答案:

答案 0 :(得分:4)

您可以使用带有Array#findIndexArray#includes的纯Javascript。

var array = [["a", "b"], ["f", "r"], ["r", 22, "t"]],
    value = 22,
    index  = array.findIndex(a => a.includes(value));
    
console.log(index);

答案 1 :(得分:1)

选项1 使用findIndex

const arr = [["a","b"],["f","r"],["r",22,"t"]];
console.log(arr.findIndex(a => a.includes(22)));

选项2 :使用功能indexOfincludes

const arr = [["a","b"],["f","r"],["r",22,"t"]];
// find element
const element = arr.find(a => a.includes(22));
// find element index
const currentIndex = arr.indexOf(element)

console.log(currentIndex);

答案 2 :(得分:0)

indexOfFlat = (val, array) => array.findIndex(_arr => _arr.includes(val));
const arr = [["a","b"],["f","r"],["r",22,"t"]];
console.log("arr", arr);
console.log("index", indexOfFlat(22, arr))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.core.min.js"></script>

答案 3 :(得分:0)

如果您实际上需要在其中找到该值的子数组,则也可以使用Array.find及其index并同时获取两者:

const arr = [["a","b"],["f","r"],["r",22,"t"]];

let index, subArr = arr.find((x,i) => x.includes(22) && ~(index=i))

console.log('sub-array: ', subArr)
console.log('index: ', index)