개체 배열에서 .join on 값을 수행합니다.
" " " 를 할 수 ..join()
다음과 같이 각 요소를 쉼표로 구분하여 단일 문자열을 가져오는 메서드입니다.
["Joe", "Kevin", "Peter"].join(", ") // => "Joe, Kevin, Peter"
개체 배열이 있으며 개체 배열에 포함된 값에 대해 유사한 작업을 수행하려고 합니다.
[
{name: "Joe", age: 22},
{name: "Kevin", age: 24},
{name: "Peter", age: 21}
]
join
method method 。name
attribute를 수 있습니다.
현재 다음과 같은 기능이 있습니다.
function joinObj(a, attr){
var out = [];
for (var i = 0; i < a.length; i++){
out.push(a[i][attr]);
}
return out.join(", ");
}
그 코드에는 아무런 문제가 없습니다. 작동하지만, 저는 갑자기 단순하고 간결한 코드 행에서 매우 중요한 기능으로 바뀌었습니다.보다 간결하고 이상적으로 기능적인 작문 방법이 있을까요?
오브젝트를 무언가에 매핑하는 경우(이 경우 속성).기능적으로 코드를 작성하려면 당신이 찾고 있는 것이 바로 그것이라고 생각합니다.
ES5에 준거하지 않은 오래된 브라우저를 지원하는 경우 시뮬레이션을 수행할 수 있습니다(위의 MDN 페이지에 폴리필이 있습니다).또 다른 방법은 언더스코어js의 방법을 사용하는 것입니다.
var users = [
{name: "Joe", age: 22},
{name: "Kevin", age: 24},
{name: "Peter", age: 21}
];
var result = _.pluck(users,'name').join(",")
경우 든지 이 값을 수 .toString
★★★★★★★★★★★★★★★★★★★:
var arr = [
{name: "Joe", age: 22, toString: function(){return this.name;}},
{name: "Kevin", age: 24, toString: function(){return this.name;}},
{name: "Peter", age: 21, toString: function(){return this.name;}}
];
var result = arr.join(", ");
console.log(result);
아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아.reduce
을 사용하다
console.log(
[
{name: "Joe", age: 22},
{name: "Kevin", age: 24},
{name: "Peter", age: 21}
]
.reduce(function (a, b) {
return (a.name || a) + ", " + b.name}
)
)
(a.name || a)
는 올바르게 요소는 처리됩니다.a
「」라고 하는 것은,a.name
정의되지 않음)은 개체로 처리되지 않습니다.
편집: 여기에 대해 자세히 설명했습니다.
x.reduce(function(a, b) {return a + ["", ", "][+!!a.length] + b.name;}, "");
합니다.a
입니다.b
(임의의 initialValue 파라미터가 사용되고 있기 때문에)는 항상 오브젝트입니다.reduce
)
6개월 후 편집:오, 내가 무슨 생각을 하고 있었지?'아쉬운'난 신들을 화나게 했어
노드 또는 ES6+의 경우:
users.map(u => u.name).join(', ')
외부 라이브러리를 사용하지 않고 쉽게 할 수 있는 방법은 없을지 모르겠지만, 저는 개인적으로 언더스코어.js를 좋아합니다.이것에는 어레이나 컬렉션 등을 취급하는 유틸리티가 많이 포함되어 있습니다.
언더스코어를 사용하면 코드 한 줄로 쉽게 이 작업을 수행할 수 있습니다.
_.pluck(arr, 'name').join(', ')
'어디서'에 .users
ES6를 사용할 수 있는 경우 가장 쉬운 해결책은 다음과 같습니다.
users.map(user => user.name).join(', ');
그렇지 않으면 다음과 같이 lodash를 사용할 수 있습니다.
_.map(users, function(user) {
return user.name;
}).join(', ');
const lists = [
{name: "Joe", age: 22},
{name: "Kevin", age: 24},
{name: "Peter", age: 21}
]
const joinedStr = lists.map((list) => list.name).join(" ")
console.log('joined',joinedStr)
이렇게 하면 맵이 문자열 배열을 반환하고 맵에 가입할 수 있습니다.
키 및 " " " " :"applications\":{\"1\":\"Element1\",\"2\":\"Element2\"}
Object.keys(myObject).map(function (key, index) {
return myObject[key]
}).join(', ')
내가 알기는 하지만 이 일을 접하는 누구와도 매우 관련이 있다.
여기서 Array.map이 제안되었습니다.이것은 제가 항상 사용하고 있는 훌륭한 방법입니다.Array.reduce도 언급되었습니다...
이 사용 예에서는 개인적으로 Array.reduce를 사용합니다.왜일까요? 코드가 약간 깨끗하지 않거나 명확하지 않은데도 말이죠.지도 기능을 결합에 연결하는 것보다 훨씬 효율적입니다.
그 이유는 Array.map이 각 요소를 루프하여 배열 내의 모든 객체의 이름이 포함된 새 배열을 반환해야 하기 때문입니다.그런 다음 Array.join을 통해 어레이의 내용을 루프하여 가입을 수행합니다.
템플릿 리터럴을 사용하여 코드를 한 줄에 표시함으로써 jackweirdy의 가독성을 향상시킬 수 있습니다."모든 최신 브라우저에서도 지원
// a one line answer to this question using modern JavaScript
x.reduce((a, b) => `${a.name || a}, ${b.name}`);
확실하지는 않지만, 이 모든 것이 작동하지만 광염색체가 아닙니다.는 두 번의 스캔을 수행하고 있으며 한 번의 스캔으로 이 작업을 수행할 수 있기 때문입니다.O(2n)는 O(n)로 간주되지만 O(n)는 항상 진정한 O(n)를 갖는 것이 좋습니다.
const Join = (arr, separator, prop) => {
let combined = '';
for (var i = 0; i < arr.length; i++) {
combined = `${combined}${arr[i][prop]}`;
if (i + 1 < arr.length)
combined = `${combined}${separator} `;
}
return combined;
}
옛날처럼 보일 수도 있지만 이렇게 할 수 있습니다.
skuCombined = Join(option.SKUs, ',', 'SkuNum');
어레이로 변환할 수 있으므로 개체 이름을 가져옵니다.
var objs = [
{name: "Joe", age: 22},
{name: "Kevin", age: 24},
{name: "Peter", age: 21}
];
document.body.innerHTML = Object.values(objs).map(function(obj){
return obj.name;
});
이 방법은 효과가 있었습니다.
var users = [
{name: "Joe", age: 22},
{name: "Kevin", age: 24},
{name: "Peter", age: 21}
]
return users.map((user: { name: string; }) => user.name).join(", ");
이거 먹어봐
var x= [
{name: "Joe", age: 22},
{name: "Kevin", age: 24},
{name: "Peter", age: 21}
]
function joinObj(a, attr) {
var out = [];
for (var i=0; i<a.length; i++) {
out.push(a[i][attr]);
}
return out.join(", ");
}
var z = joinObj(x,'name');
z > "Joe, Kevin, Peter"
var y = joinObj(x,'age');
y > "22, 24, 21"
가장 쉬운 방법:
const oldArrayOfObjects = [
{name: "Bob", age:40},
{name: "Andrew", age:25},
{name: "Peter", age:30}];
const newArrayOfStringNames = oldArrayOfObjects.map((OA) => OA.name);
const newArrayOfAges = oldArrayOfObjects.map((OA) => OA.age);
console.log({newArrayOfStringNames, newArrayOfAges})
언급URL : https://stackoverflow.com/questions/16607557/perform-join-on-value-in-array-of-objects
'sourcecode' 카테고리의 다른 글
WHERE 절에서 mysql SUM()을 사용합니다. (0) | 2022.09.05 |
---|---|
Java에서 범용 어레이 유형을 생성할 수 없는 이유는 무엇입니까? (0) | 2022.09.05 |
Node.js에서 MySQL(ORM 없음)을 어떻게 조롱합니까? (0) | 2022.09.05 |
MySQL: 저장 프로시저에서 여러 필드를 여러 변수로 선택 (0) | 2022.09.05 |
클래스 메서드의 'self' 파라미터는 무엇입니까? (0) | 2022.09.05 |