올바른 목록의 색인을 필터링하고 가져올 수있는 방법은 무엇입니까?
당신 수 사용 filter
,하지만 난 않을 것;
var z = [["231f20", 5385], ["ffffff", 2419], ["ffafff", 2419]];
var index = z.findIndex(function(entry) {
return entry.indexOf("ffffff") != -1;
});
console.log(index);
findIndex
콜백이 truthy 값을 반환하는 첫 번째 항목의 인덱스를 반환 : 나는 findIndex
* 사용하는 것입니다.
그냥 외부 인덱스 (1)를 알려줍니다. 당신이 모두 인덱스를 원한다면, 나는 아마 가까운 결과 변수를 통해 ** some
를 사용하여 콜백이있을 것이다 :
var z = [["231f20", 5385], ["ffffff", 2419], ["ffafff", 2419]];
var outerIndex, innerIndex;
var index = z.some(function(entry, index) {
var n = entry.indexOf("ffffff");
if (n != -1) {
outerIndex = index;
innerIndex = n;
return true;
}
});
console.log(outerIndex, innerIndex);
* findIndex
는 ES2015에 추가 되었으나, 그것은 polyfill하는 것이 사소한 일이다; polyfill에 대한 링크 된 MDN 기사를 참조하십시오.
** some
은 2009 년 ES5에서 나왔으므로 IE8과 같은 진정으로 쓸모없는 브라우저가 아닌 모든 것이 될 것입니다. 또한 polyfillable.
Object.prototype.deepIndexOf = Array.prototype.deepIndexOf = function (v) {
for (var i in this) {
if (this[i] === v) {
return [i];
}
if ('object' === typeof this[i]) {
var t = this[i].deepIndexOf(v);
if (t !== undefined) {
t.unshift(i);
return t;
}
}
}
return undefined;
}
을이 아마 어떤 경우에는 실패하지만, 간단한 배열과 객체에 대해 작동합니다 :
나는 인덱스의 배열 따라 반환하는 신속하고 더러운 깊은 같이 IndexOf 기능을 작성했습니다
어떤 색인을 원하십니까? 1? (1, 0)? –
내부 배열의 내용을 검색하려면 배열을 병합하거나 재귀 적 메서드를 사용해야합니다. – 31piy
''ffffff ''는 어떤 경우에도'z [0]'에 없습니다. –