Немного измененная версия других ответов (мне нравится это коротко и просто):
String[] words = str1.split("[!-~]* ");
Set<String> uniqueWords = new HashSet<String>();
for (String word : words) {
uniqueWords.add(word);
}
Примечание: если вы хотите разделить на !
или -
или ~
или пробел, вы должны использовать это:
String[] words = str1.split("[-!~\\s]+");
(черта должна быть первой или последней)
Вы можете использовать цикл for следующим образом:
var a = [1, 2, 3];
var b = ["a", "b", "c"];
var c = [];
for (var i = 0; i < a.length; i ++) {
c[i] = {'a': a[i], 'b': b[i]};
}
console.log(c);
Вы можете использовать для этого цикл Array.forEach()
:
var a = [1, 2, 3];
var b = ["a", "b", "c"];
var c = [];
a.forEach((item, index)=>{
c.push({a: item, b: b[index]});
});
console.log(c);
Вы можете использовать Array#reduce
, чтобы сделать что-то вроде этого:
var a = [1, 2, 3];
var b = ["a", "b", "c"];
var c = a.reduce((accumulator, e, index) => {
return accumulator.concat({a: e, b: b[index]});
}, [])
console.log(c);
Вы можете взять объект с произвольным количеством свойств и создать массив объектов.
var a = [1, 2, 3],
b = ["a", "b", "c"],
result = Object
.entries({ a, b })
.reduce((r, [k, a]) => {
a.forEach((v, i) => Object.assign(r[i] = r[i] || {}, { [k]: v }));
return r;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Вы можете использовать Array.map
let a = [1, 2, 3];
let b = ["a", "b", "c"];
let c = a.map((v,i) => ({a:v, b: b[i]}));
console.log(c);
Примечание. Большинство решений на этой странице не проверяют, имеют ли переменные a
и b
ту же длину
var a = [1, 2, 3];
var b = ["a", "b", "c"];
function combine(a,b){
if (a.length === b.length){ // Check if both arrays have same length
var arr = []; // Make an empty array
for(var i=0; i<a.length; i++){ // iterate every element of the array
var obj = {} // Make an empty object
obj["a"] = a[i];
obj["b"] = b[i];
arr.push(obj);
}
}else{
throw "Arrays don't have the same length";
}
return arr;
}
combine(a, b); // Use it like a function