underscore에서 _.each와 _.맵의 차이
var number = ['ITEM000001','ITEM000003-2']
var obj_number = {}
var a = _.each(number,function(barcode){
// ‘-’ key , ‘-’ ‘-’ ,'-' key
barcode = barcode.split('-')
obj_number[barcode[0]] = ( obj_number[barcode[0]] || 0 ) + ( parseFloat(barcode[1]) || 1 )
})
console.log(a)
console.log(JSON.stringify(obj_number))
a = ITEM000001,ITEM000003-2
obj_number = {"ITEM000001":1,"ITEM000003":2}
each 원수 그룹의 모든 원소를 훑어본 후, 순서대로 모든 함수가 실행된 원소를 출력하고, 여기에서 나는 모든 결과를 하나의 대상에 넣기 때문에 직접 출력한다
var obj_number = {}
var b = _.map(number,function(barcode){
barcode = barcode.split('-')
obj_number[barcode[0]] = ( obj_number[barcode[0]] || 0 ) + ( parseFloat(barcode[1]) || 1 )
})
console.log(b)
console.log(JSON.stringify(obj_number))
b = ,
obj_number = {"ITEM000001":1,"ITEM000003":2}
맵은 그룹의 모든 요소를 함수로 실행한 후 새 그룹에 넣지만, 반환 값을 설정하지 않으면 비어 있습니다 (구체적으로 다음과 같습니다)
var c = _.map(number,function(barcode){
' '+barcode
})
console.log(c)
c = ,
맵이 새 그룹을 만들었습니다. 함수가 모든 값을 실행하면 새 그룹에 값을 부여합니다. 그러나 되돌아오는 값이 없기 때문에 비어 있습니다.
var d = _.map(number,function(barcode){
return ' '+barcode
})
console.log(d)
d = 결과 ITEM000001, 결과 ITEM000003-2
반환값 설정
var e = _.each(number,function(barcode){
' '+barcode
})
var f = _.each(number,function(barcode){
return g = ' '+barcode
})
console.log(e)
console.log(f)
console.log(g)
e = ITEM000001,ITEM000003-2
f = ITEM000001,ITEM000003-2
g = 결과 ITEM000003-2
each는 모든 요소를 두루 훑어보며, 사용자가 스스로 수조를 만들어 저장하지 않으면 함수 실행 결과가 모두 사라집니다.
g는 하나의 결과만 출력합니다. 왜냐하면 each는 모든 요소를 순서대로 출력하기 때문입니다. 이런 형식으로 그룹 출력을 정의하면 모든 결과를 순서대로 g에게 부여하고 덮어씁니다. 현재 본인은push를 사용하여 새로운 그룹 (대상) 으로 밀어넣습니다.
버전 2:
맵은 입력 그룹과 같은 길이의 그룹을 만들고 리턴의 내용을 부여합니다. 따라서 필요한 결과가 그룹 형식이 아닐 때 each를 사용하는 것이 좋습니다. 그룹 형식의 결과라도 필요한 길이가 일치하지 않을 때, 예를 들어 그룹 중 몇 개만 결과를 입력할 때underfind가 발생합니다.
var a = _.map([1,2,3,4,5,6],function(num){
if( num > 3 ){
return num
}
})
=>[undefined, undefined, undefined, 4, 5, 6]
compact와 함께 모든false값을 제거한 후에야 필요한 결과를 얻을 수 있습니다
compact_.compact(array)
javascript , false, null, 0, "", undefined NaN false .
_.compact([undefined, undefined, undefined, 4, 5, 6]);
=>[4,5,6]
보통 맵의 일일이 대응하는 특성을 사용하지 못할 때 each를 사용하면 돼요.
http://www.bootcss.com/
bootcss 관련 양질의 프로젝트 포함
마지막으로 each와 맵의 원본 코드를 첨부합니다.
//The cornerstone, an `each` implementation, aka `forEach`.
//Handles raw objects in addition to array-likes. Treats all
//sparse array-likes as if they were dense.
_.each = _.forEach = function(obj, iteratee, context) {
if (obj == null) return obj;
iteratee = createCallback(iteratee, context);
var i, length = obj.length;
if (length === +length) {
for (i = 0; i < length; i++) {
iteratee(obj[i], i, obj);
}
} else {
var keys = _.keys(obj);
for (i = 0, length = keys.length; i < length; i++) {
iteratee(obj[keys[i]], keys[i], obj);
}
}
return obj;
};
//iteratee (교체) 를 모든 요소에 적용한 결과를 되돌려줍니다.
_.map = _.collect = function(obj, iteratee, context) {
if (obj == null) return [];
iteratee = _.iteratee(iteratee, context);
var keys = obj.length !== +obj.length && _.keys(obj),
length = (keys || obj).length,
results = Array(length),
currentKey;
for (var index = 0; index < length; index++) {
currentKey = keys ? keys[index] : index;
results[index] = iteratee(obj[currentKey], currentKey, obj);
}
return results;
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.