JavaScript에서 다중 배열 순회를 피하십시오

αƞjiβ

코드의 목표는 10 이상의 숫자 구성 요소가있는 모든 레이블을 레이블이있는 단일 객체로 결합하는 새 배열을 생성하는 것입니다 V10+. 새 개체 값은 가장 큰 레이블의 값이됩니다.

다음 예에서는 V13가장 큰 레이블이므로 해당 값이 사용됩니다.

[{'V10', 11}, {'V11', 123}, {'V12', 112}, {'V13', 120}] => {'V10+', 120}

현재 내가 사용해야 find, map다음 reduce배열에. 누구든지 이것을 단순화하는 제안이 있습니까?

var someObjects = [
    {'label': 'VS', 'value': 1 },
    {'label': 'V1', 'value': 2 },
    {'label': 'V2', 'value': 3 },
    {'label': 'V3', 'value': 4 },
    {'label': 'V4', 'value': 5 },
    {'label': 'V5', 'value': 6 },
    {'label': 'V6', 'value': 7 },
    {'label': 'V7', 'value': 8 },
    {'label': 'V8', 'value': 9 },
    {'label': 'V9', 'value': 10 },
    {'label': 'V10', 'value': 11 },
    {'label': 'V11', 'value': 123 },
    {'label': 'V12', 'value': 112 },
    {'label': 'V13', 'value': 120 },
    {'label': 'VE', 'value': 13 }
];

var maxObjVal = someObjects.find(function(obj) {
    var max =  Math.max.apply(null, someObjects.map(function (s) {
        var labelNumber = s.label.substring(1);
        return +labelNumber || 0;
    }));

    return obj.label == 'V' + max;
}).value;

var result = someObjects.reduce(function (ten) {
        return function (r, a) {
            var n = +a.label.substring(1);
            if (n >= 10) {
                if (!ten) {
                    ten = { label: 'V10+', value: maxObjVal };
                    r.push(ten);
                }
            } else {
                r.push(a);
            }
            return r;
        };
    }(), []);

console.log('result: ' + JSON.stringify(result));

진정시키다 21

배열을 통해 단일 반복으로 벗어날 수 있습니다. someObjects 정의 후에 이것을 시도하십시오.

var resultArray = [];
var tenObj = null;
var maxVal;

someObjects.forEach(function (s) {
    // Get the number from the label (if possible)
    var labelNumber = s.label.substring(1);
    labelNumber = +labelNumber || 0;

    // Update the maxVal
    maxVal = maxVal ? Math.max(maxVal, s.value) : s.value;

    // Check for a label number >= 10
    if (labelNumber >= 10) {
        if (!tenObj) {
            tenObj = { label: 'V10+', value: 0}; // We'll set this value later
            resultArray.push(tenObj);
        }
    } else {
        resultArray.push(s);
    }
}));

// Update the value of the tenObj
if (tenObj) {
    tenObj.value = maxVal;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

신속 하게이 foreach 루프를 단순화하십시오 (중첩 배열에서 최소 / 최대 찾기)

분류에서Dev

else 내에서 이중 getElementId를 피하십시오.

분류에서Dev

JavaScript에서 빈 배열을 피하십시오

분류에서Dev

GA Jgap : 순서가 중요하지 않은 중복 (doublettes) 염색체를 피하십시오.

분류에서Dev

perl에서 중복을 제거하지 않고 배열에서 원래 요소를 제거하십시오.

분류에서Dev

kN 크기의 1D 배열에서 크기 N의 1D 배열로 배열 연산에서 for 루프를 피하십시오.

분류에서Dev

json 배열에서 중복을 제거하고 node.js를 사용하여 ID를 결합하십시오.

분류에서Dev

pandas 데이터 프레임에서 두 개의 열만 피벗하고 그중 하나를 추가하십시오.

분류에서Dev

JavaScript를 사용하여 배열에서 다른 배열로 값을 다른 순서로 가져옵니다.

분류에서Dev

값이 중복되고 다른 열이 PHP의 다차원 배열에서 다른지 확인하십시오.

분류에서Dev

배열의 순서를 유지하지만 값을 변경하십시오.

분류에서Dev

vba에서 QUery의 배열을 채운 다음 데이터를 테이블에 삽입하십시오.

분류에서Dev

JavaScript 유형 함수에서 self = this를 피하십시오.

분류에서Dev

이미지 중앙에 div를 배치하십시오.

분류에서Dev

db 열 내부의 해시 값을 합하고 결과를 다른 곳에 배치하십시오.

분류에서Dev

JavaScript를 사용하여 문자열로 저장된 중첩 배열을 다시 중첩 배열로 변환

분류에서Dev

`NSFetchedResultsController`에서 백그라운드 업데이트 중`UITableView`에서 점프를 피하십시오.

분류에서Dev

정렬 된 배열에서 중복을 제거하고 이해하십시오.

분류에서Dev

중괄호를 찾기 위해 문자열을 일치시키고 중괄호에서 다른 문자열을 일치시키고 교체하십시오.

분류에서Dev

객체 배열 javascript / react-native에서 중복 된 두 필드 중 하나를 제거합니다.

분류에서Dev

파이썬에서 중복을 피하기 위해 반복자를 결합하십시오.

분류에서Dev

Dapper, 십진수를 두 배로? 열 X를 구문 분석하는 중에 오류가 발생했습니다.

분류에서Dev

배열 해보십시오 캐치 if 문에서 배열의 길이를 인식 할 수 없습니다

분류에서Dev

jQuery를 사용하여 순서 배열에 따라 테이블의 tr을 재정렬하십시오.

분류에서Dev

키가 PHP를 사용하여 다차원 배열에 값이 있는지 확인하십시오.

분류에서Dev

<br>로 분할하고 문자열에서 강력한 태그를 피하십시오.

분류에서Dev

배열에서 중복을 제거하고 배열에 두 번째 값을 추가하십시오.

분류에서Dev

React로 중첩 된 Javascript 배열의 열 값을 참조하십시오.

분류에서Dev

중첩 배열에서 .filter를 사용하는 Javascript

Related 관련 기사

  1. 1

    신속 하게이 foreach 루프를 단순화하십시오 (중첩 배열에서 최소 / 최대 찾기)

  2. 2

    else 내에서 이중 getElementId를 피하십시오.

  3. 3

    JavaScript에서 빈 배열을 피하십시오

  4. 4

    GA Jgap : 순서가 중요하지 않은 중복 (doublettes) 염색체를 피하십시오.

  5. 5

    perl에서 중복을 제거하지 않고 배열에서 원래 요소를 제거하십시오.

  6. 6

    kN 크기의 1D 배열에서 크기 N의 1D 배열로 배열 연산에서 for 루프를 피하십시오.

  7. 7

    json 배열에서 중복을 제거하고 node.js를 사용하여 ID를 결합하십시오.

  8. 8

    pandas 데이터 프레임에서 두 개의 열만 피벗하고 그중 하나를 추가하십시오.

  9. 9

    JavaScript를 사용하여 배열에서 다른 배열로 값을 다른 순서로 가져옵니다.

  10. 10

    값이 중복되고 다른 열이 PHP의 다차원 배열에서 다른지 확인하십시오.

  11. 11

    배열의 순서를 유지하지만 값을 변경하십시오.

  12. 12

    vba에서 QUery의 배열을 채운 다음 데이터를 테이블에 삽입하십시오.

  13. 13

    JavaScript 유형 함수에서 self = this를 피하십시오.

  14. 14

    이미지 중앙에 div를 배치하십시오.

  15. 15

    db 열 내부의 해시 값을 합하고 결과를 다른 곳에 배치하십시오.

  16. 16

    JavaScript를 사용하여 문자열로 저장된 중첩 배열을 다시 중첩 배열로 변환

  17. 17

    `NSFetchedResultsController`에서 백그라운드 업데이트 중`UITableView`에서 점프를 피하십시오.

  18. 18

    정렬 된 배열에서 중복을 제거하고 이해하십시오.

  19. 19

    중괄호를 찾기 위해 문자열을 일치시키고 중괄호에서 다른 문자열을 일치시키고 교체하십시오.

  20. 20

    객체 배열 javascript / react-native에서 중복 된 두 필드 중 하나를 제거합니다.

  21. 21

    파이썬에서 중복을 피하기 위해 반복자를 결합하십시오.

  22. 22

    Dapper, 십진수를 두 배로? 열 X를 구문 분석하는 중에 오류가 발생했습니다.

  23. 23

    배열 해보십시오 캐치 if 문에서 배열의 길이를 인식 할 수 없습니다

  24. 24

    jQuery를 사용하여 순서 배열에 따라 테이블의 tr을 재정렬하십시오.

  25. 25

    키가 PHP를 사용하여 다차원 배열에 값이 있는지 확인하십시오.

  26. 26

    <br>로 분할하고 문자열에서 강력한 태그를 피하십시오.

  27. 27

    배열에서 중복을 제거하고 배열에 두 번째 값을 추가하십시오.

  28. 28

    React로 중첩 된 Javascript 배열의 열 값을 참조하십시오.

  29. 29

    중첩 배열에서 .filter를 사용하는 Javascript

뜨겁다태그

보관