이 배열의 각 항목은 숫자입니다.
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'