[javascript] 배열의 항목을 Javascript로 바꾸는 방법은 무엇입니까?

이 배열의 각 항목은 숫자입니다.

var items = Array(523,3452,334,31, ...5346);

일부 숫자를 배열로 바꾸려면 어떻게해야합니까?

예를 들어, 3452를 1010으로 바꾸려면 어떻게해야합니까?



답변

var index = items.indexOf(3452);

if (index !== -1) {
    items[index] = 1010;
}

또한 생성자 메서드를 사용하여 배열을 초기화하지 않는 것이 좋습니다. 대신 리터럴 구문을 사용하십시오.

var items = [523, 3452, 334, 31, 5346];

~간결한 JavaScript를 사용하고 -1비교 를 단축하려는 경우 연산자를 사용할 수도 있습니다 .

var index = items.indexOf(3452);

if (~index) {
    items[index] = 1010;
}

때로는 contains이 검사를 추상화하고 진행 상황을 이해하기 쉽도록 함수 를 작성하고 싶습니다 . 가장 좋은 점은 배열과 문자열 모두에서 작동합니다.

var contains = function (haystack, needle) {
    return !!~haystack.indexOf(needle);
};

// can be used like so now:
if (contains(items, 3452)) {
    // do something else...
}

문자열의 경우 ES6 / ES2015로 시작하고 배열의 경우 ES2016으로 제안하면 소스에 다른 값이 포함되어 있는지 더 쉽게 확인할 수 있습니다.

if (haystack.includes(needle)) {
    // do your thing
}


답변

Array.indexOf()방법은 첫 번째 인스턴스를 대체합니다. 모든 인스턴스를 사용하려면 Array.map()다음을 수행하십시오.

a = a.map(function(item) { return item == 3452 ? 1010 : item; });

물론, 그것은 새로운 배열을 만듭니다. 제자리에 배치하려면 Array.forEach()다음을 사용하십시오 .

a.forEach(function(item, i) { if (item == 3452) a[i] = 1010; });


답변

내 제안 해결책은 다음과 같습니다.

items.splice(1, 1, 1010);

스플 라이스 작업은 배열의 1 위치부터 시작하여 1 개의 항목을 제거 3452하고 새 항목으로 교체합니다 1010.


답변

indexOf를 사용하여 요소를 찾으십시오.

var i = items.indexOf(3452);
items[i] = 1010;


답변

for루프로 쉽게 달성 할 수 있습니다 .

for (var i = 0; i < items.length; i++)
    if (items[i] == 3452)
        items[i] = 1010;


답변

색인을 사용하여 원하는 수의 목록을 편집 할 수 있습니다

예를 들면 다음과 같습니다.

items[0] = 5;
items[5] = 100;


답변

복잡한 객체 (또는 단순한 객체)를 사용하고 es6을 사용할 수 있다면 Array.prototype.findIndex좋은 것입니다. OP 어레이의 경우

const index = items.findIndex(x => x === 3452)
items[index] = 1010

더 복잡한 물체의 경우 실제로 빛납니다. 예를 들어

const index =
    items.findIndex(
       x => x.jerseyNumber === 9 && x.school === 'Ohio State'
    )

items[index].lastName = 'Utah'
items[index].firstName = 'Johnny'