[개요] 개발 효율성을 높이는 데 도움이 되는 JS 배열의 일반적인 작업 방법!
개발 과정에서 어레이에 대한 많은 사용 시나리오가 있으며 어레이와 관련된 많은 작업도 일상 생활에 관여합니다. 이 기사에서는 몇 가지 일반적인 작업 방법을 요약하고 이를 공유합니다. 개발 중에 이를 손쉽게 사용할 수 있다면 개발 효율성을 크게 향상시킬 수 있습니다.
무작위 정렬
1. 난수 생성
배열을 순회하고, 각 주기마다 배열 길이 범위 내에서 숫자를 무작위화하고, 이 주기의 위치와 난수 위치 요소를 교환합니다.
function randomSort1(arr) { for (let i = 0, l = arr.length; i < l; i++) { let rc = parseInt(Math.random() * l) // 让当前循环的数组元素和随机出来的数组元素交换位置 const empty = arr[i] arr[i] = arr[rc] arr[rc] = empty } return arr } var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] // 下面两次的结果肯定是不一样的; console.log(randomSort1(arr1)) console.log(randomSort1(arr1))
2. 새 배열을 생성합니다
새 빈 배열을 선언하고 while 루프를 사용합니다. 배열 길이가 0보다 크면 계속해서 반복합니다.
모든 주기에는 임의의 배열이 있습니다. 배열 길이 범위 내부의 숫자, 난수 위치의 요소를 새 배열에 밀어 넣고
스플라이스를 사용합니다(스플라이스를 이해하지 못하는 학생은 여기에서 읽을 수 있음). 난수 위치의 요소를 가로챕니다. 또한 원본 배열의 길이를 수정합니다.
function randomSort2(arr) { var mixedArr = [] while (arr.length > 0) { let rc = parseInt(Math.random() * arr.length) mixedArr.push(arr[rc]) arr.splice(rc, 1) } return mixedArr } // 例子 var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] console.log(randomSort2(arr1))
3, arr.sort
CompareFunction(a, b)의 반환 값이 0보다 작으면 a가 b보다 먼저 정렬됩니다.
CompareFunction(a, b의 반환 값)이 0이면 a와 b의 상대 위치는 변경되지 않습니다.
-
CompareFunction(a, b)의 반환 값이 다음보다 큰 경우; 0이면 b가 a 앞에 정렬됩니다.
배열 객체 정렬
1. 단일 속성 정렬
function randomSort3(arr) { arr.sort(function (a, b) { return Math.random() - 0.5 }) return arr } // 例子 var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] console.log(randomSort3(arr1))
1. ES6
에서 플랫 메소드를 호출합니다. function compare(property) {
return function (a, b) {
let value1 = a[property]
let value2 = b[property]
return value1 - value2
}
}
let arr = [
{ name: 'zopp', age: 10 },
{ name: 'gpp', age: 18 },
{ name: 'yjj', age: 8 },
]
console.log(arr.sort(compare('age')))
로그인 후 복사E
2, 일반 재귀 function compare(property) { return function (a, b) { let value1 = a[property] let value2 = b[property] return value1 - value2 } } let arr = [ { name: 'zopp', age: 10 }, { name: 'gpp', age: 18 }, { name: 'yjj', age: 8 }, ] console.log(arr.sort(compare('age')))
function by(name, minor) { return function(o, p) { let a, b if (o && p && typeof o === 'object' && typeof p === 'object') { a = o[name] b = p[name] if (a === b) { return typeof minor === 'function' ? minor(o, p) : 0 } if (typeof a === typeof b) { return a < b ? -1 : 1 } return typeof a < typeof b ? -1 : 1 } else { thro('error') } } },
ary = arr.flat(Infinity) console.log([1, [2, 3, [4, 5, [6, 7]]]].flat(Infinity))
4, 확장 연산자
let result = [] let flatten = function (arr) { for (let i = 0; i < arr.length; i++) { let item = arr[i] if (Array.isArray(arr[i])) { flatten(item) } else { result.push(item) } } return result } let arr = [1, 2, [3, 4], [5, [6, 7]]] console.log(flatten(arr))
재결합을 위한 배열
1. 쿼리하려면
function flatten(arr) {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flatten(cur) : cur)
}, [])
}
let arr = [1, 2, [3, 4], [5, [6, 7]]]
console.log(flatten(arr))
로그인 후 복사 2. 원래 배열을 먼저 정렬하고 인접한 배열과 비교한 후 다르면 새 배열에 저장합니다.
function flatten(arr) {
while (arr.some((item) => Array.isArray(item))) {
arr = [].concat(...arr)
}
return arr
}
let arr = [1, 2, [3, 4], [5, [6, 7]]]
console.log(flatten(arr))
로그인 후 복사
3. 객체 속성의 존재를 활용하세요. 해당 속성이 없으면 새 배열에 저장하세요.
function unique(arr) {
var newArr = []
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
로그인 후 복사4. 배열 프로토타입 객체에 include 메소드를 사용하세요.
function unique(arr) {
var formArr = arr.sort()
var newArr = [formArr[0]]
for (let i = 1; i < formArr.length; i++) {
if (formArr[i] !== formArr[i - 1]) {
newArr.push(formArr[i])
}
}
return newArr
}
console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
로그인 후 복사5. 배열 프로토타입 객체에 필터와 포함 메서드를 사용하세요.
function unique(arr) {
var obj = {}
var newArr = []
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = 1
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
로그인 후 복사6. ES6의 set 메소드를 사용하세요.
function unique(arr) {
var newArr = []
for (var i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i])) {
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
로그인 후 복사속성을 기준으로 중복 제거
방법 1
function unique(arr) {
var newArr = []
newArr = arr.filter(function (item) {
return newArr.includes(item) ? '' : newArr.push(item)
})
return newArr
}
console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
로그인 후 복사
방법 2
function unique(arr) {
return Array.from(new Set(arr)) // 利用Array.from将Set结构转换成数组
}
console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
로그인 후 복사교차점/결합/차이
1. 필터 방식과 결합된 방식이 포함됩니다
function unique(arr) {
const res = new Map()
return arr.filter((item) => !res.has(item.productName) && res.set(item.productName, 1))
}
로그인 후 복사2. ES6 데이터 구조 설정
function unique(arr) {
let result = {}
let obj = {}
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i].key]) {
result.push(arr[i])
obj[arr[i].key] = true
}
}
}
로그인 후 복사Array summation
1. Universal for loop
let a = [1, 2, 3]
let b = [2, 4, 5]
// 并集
let union = a.concat(b.filter((v) => !a.includes(v)))
// [1,2,3,4,5]
// 交集
let intersection = a.filter((v) => b.includes(v))
// [2]
// 差集
let difference = a.concat(b).filter((v) => !a.includes(v) || !b.includes(v))
// [1,3,4,5]
로그인 후 복사2. 3. ES6 축소 방법
let a = new Set([1, 2, 3])
let b = new Set([2, 4, 5])
// 并集
let union = new Set([...a, ...b])
// Set {1, 2, 3, 4,5}
// 交集
let intersect = new Set([...a].filter((x) => b.has(x)))
// set {2}
// a 相对于 b 的)差集
let difference = new Set([...a].filter((x) => !b.has(x)))
// Set {1, 3}
로그인 후 복사 Array와 같은 변환
1. 배열의 슬라이스 방법
function sum(arr) {
var s = 0
for (var i = arr.length - 1; i >= 0; i--) {
s += arr[i]
}
return s
}
sum([1, 2, 3, 4, 5]) // 15
로그인 후 복사
2. ES6의 Array.from()function sum(arr) {
var len = arr.length
if (len == 0) {
return 0
} else if (len == 1) {
return arr[0]
} else {
return arr[0] + sum(arr.slice(1))
}
}
sum([1, 2, 3, 4, 5]) // 15
로그인 후 복사
3.
어레이를 위로 이동하고 down
function sum(arr) {
return arr.reduce(function (prev, curr) {
return prev + curr
}, 0)
}
sum([1, 2, 3, 4, 5]) // 15
로그인 후 복사
배열을 트리 구조로 변환
다음 데이터를 트리 구조로 변환let arr = Array.prototype.slice.call(arguments)
로그인 후 복사
...
구현 방법
let arr = Array.from(arguments)
로그인 후 복사[관련 권장 사항: javascript 학습 튜토리얼]
위 내용은 [개요] 개발 효율성을 높이는 데 도움이 되는 JS 배열의 일반적인 작업 방법!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
function flatten(arr) { return arr.reduce((pre, cur) => { return pre.concat(Array.isArray(cur) ? flatten(cur) : cur) }, []) } let arr = [1, 2, [3, 4], [5, [6, 7]]] console.log(flatten(arr))
function flatten(arr) { while (arr.some((item) => Array.isArray(item))) { arr = [].concat(...arr) } return arr } let arr = [1, 2, [3, 4], [5, [6, 7]]] console.log(flatten(arr))
function unique(arr) { var newArr = [] for (var i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) === -1) { newArr.push(arr[i]) } } return newArr } console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
function unique(arr) { var formArr = arr.sort() var newArr = [formArr[0]] for (let i = 1; i < formArr.length; i++) { if (formArr[i] !== formArr[i - 1]) { newArr.push(formArr[i]) } } return newArr } console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
function unique(arr) { var obj = {} var newArr = [] for (let i = 0; i < arr.length; i++) { if (!obj[arr[i]]) { obj[arr[i]] = 1 newArr.push(arr[i]) } } return newArr } console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
function unique(arr) { var newArr = [] for (var i = 0; i < arr.length; i++) { if (!newArr.includes(arr[i])) { newArr.push(arr[i]) } } return newArr } console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
function unique(arr) { var newArr = [] newArr = arr.filter(function (item) { return newArr.includes(item) ? '' : newArr.push(item) }) return newArr } console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
function unique(arr) { return Array.from(new Set(arr)) // 利用Array.from将Set结构转换成数组 } console.log(unique([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]))
function unique(arr) { const res = new Map() return arr.filter((item) => !res.has(item.productName) && res.set(item.productName, 1)) }
function unique(arr) { let result = {} let obj = {} for (var i = 0; i < arr.length; i++) { if (!obj[arr[i].key]) { result.push(arr[i]) obj[arr[i].key] = true } } }
1. Universal for loop
let a = [1, 2, 3]
let b = [2, 4, 5]
// 并集
let union = a.concat(b.filter((v) => !a.includes(v)))
// [1,2,3,4,5]
// 交集
let intersection = a.filter((v) => b.includes(v))
// [2]
// 差集
let difference = a.concat(b).filter((v) => !a.includes(v) || !b.includes(v))
// [1,3,4,5]
로그인 후 복사2. 3. ES6 축소 방법
let a = new Set([1, 2, 3])
let b = new Set([2, 4, 5])
// 并集
let union = new Set([...a, ...b])
// Set {1, 2, 3, 4,5}
// 交集
let intersect = new Set([...a].filter((x) => b.has(x)))
// set {2}
// a 相对于 b 的)差集
let difference = new Set([...a].filter((x) => !b.has(x)))
// Set {1, 3}
로그인 후 복사 Array와 같은 변환
1. 배열의 슬라이스 방법
function sum(arr) {
var s = 0
for (var i = arr.length - 1; i >= 0; i--) {
s += arr[i]
}
return s
}
sum([1, 2, 3, 4, 5]) // 15
로그인 후 복사
2. ES6의 Array.from()function sum(arr) {
var len = arr.length
if (len == 0) {
return 0
} else if (len == 1) {
return arr[0]
} else {
return arr[0] + sum(arr.slice(1))
}
}
sum([1, 2, 3, 4, 5]) // 15
로그인 후 복사
3.
어레이를 위로 이동하고 down
function sum(arr) {
return arr.reduce(function (prev, curr) {
return prev + curr
}, 0)
}
sum([1, 2, 3, 4, 5]) // 15
로그인 후 복사
배열을 트리 구조로 변환
다음 데이터를 트리 구조로 변환let arr = Array.prototype.slice.call(arguments)
로그인 후 복사
...
구현 방법
let arr = Array.from(arguments)
로그인 후 복사[관련 권장 사항: javascript 학습 튜토리얼]
위 내용은 [개요] 개발 효율성을 높이는 데 도움이 되는 JS 배열의 일반적인 작업 방법!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
let a = [1, 2, 3] let b = [2, 4, 5] // 并集 let union = a.concat(b.filter((v) => !a.includes(v))) // [1,2,3,4,5] // 交集 let intersection = a.filter((v) => b.includes(v)) // [2] // 差集 let difference = a.concat(b).filter((v) => !a.includes(v) || !b.includes(v)) // [1,3,4,5]
let a = new Set([1, 2, 3]) let b = new Set([2, 4, 5]) // 并集 let union = new Set([...a, ...b]) // Set {1, 2, 3, 4,5} // 交集 let intersect = new Set([...a].filter((x) => b.has(x))) // set {2} // a 相对于 b 的)差集 let difference = new Set([...a].filter((x) => !b.has(x))) // Set {1, 3}
function sum(arr) { var s = 0 for (var i = arr.length - 1; i >= 0; i--) { s += arr[i] } return s } sum([1, 2, 3, 4, 5]) // 15
function sum(arr) { var len = arr.length if (len == 0) { return 0 } else if (len == 1) { return arr[0] } else { return arr[0] + sum(arr.slice(1)) } } sum([1, 2, 3, 4, 5]) // 15
function sum(arr) { return arr.reduce(function (prev, curr) { return prev + curr }, 0) } sum([1, 2, 3, 4, 5]) // 15
let arr = Array.prototype.slice.call(arguments)
...
구현 방법let arr = Array.from(arguments)

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











WebSocket 및 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 소개: 지속적인 기술 개발로 음성 인식 기술은 인공 지능 분야의 중요한 부분이 되었습니다. WebSocket과 JavaScript를 기반으로 한 온라인 음성 인식 시스템은 낮은 대기 시간, 실시간, 크로스 플랫폼이라는 특징을 갖고 있으며 널리 사용되는 솔루션이 되었습니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법을 소개합니다.

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 소개: 인터넷의 대중화와 기술의 발전으로 점점 더 많은 레스토랑에서 온라인 주문 서비스를 제공하기 시작했습니다. 실시간 온라인 주문 시스템을 구현하기 위해 JavaScript 및 WebSocket 기술을 사용할 수 있습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 양방향 통신을 실현할 수 있습니다. 실시간 온라인 주문 시스템에서는 사용자가 요리를 선택하고 주문을 하면

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 오늘날의 디지털 시대에는 점점 더 많은 기업과 서비스에서 온라인 예약 기능을 제공해야 합니다. 효율적인 실시간 온라인 예약 시스템을 구현하는 것이 중요합니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. WebSocket이란 무엇입니까? WebSocket은 단일 TCP 연결의 전이중 방식입니다.

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

사용법: JavaScript에서 insertBefore() 메서드는 DOM 트리에 새 노드를 삽입하는 데 사용됩니다. 이 방법에는 삽입할 새 노드와 참조 노드(즉, 새 노드가 삽입될 노드)라는 두 가지 매개 변수가 필요합니다.

JavaScript는 웹 개발에 널리 사용되는 프로그래밍 언어인 반면 WebSocket은 실시간 통신에 사용되는 네트워크 프로토콜입니다. 두 가지의 강력한 기능을 결합하면 효율적인 실시간 영상 처리 시스템을 만들 수 있습니다. 이 기사에서는 JavaScript와 WebSocket을 사용하여 이 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 첫째, 실시간 영상처리 시스템의 요구사항과 목표를 명확히 할 필요가 있다. 실시간 이미지 데이터를 수집할 수 있는 카메라 장치가 있다고 가정해 보겠습니다.
