Несколько массивов, преобразованных в объекты в один массив с помощью Node JS

Немного измененная версия других ответов (мне нравится это коротко и просто):

String[] words = str1.split("[!-~]* ");
Set<String> uniqueWords = new HashSet<String>();

for (String word : words) {
    uniqueWords.add(word);
}

Примечание: если вы хотите разделить на ! или - или ~ или пробел, вы должны использовать это:

String[] words = str1.split("[-!~\\s]+");

(черта должна быть первой или последней)

-1
задан mesopotamija9 13 July 2018 в 11:19
поделиться

6 ответов

Вы можете использовать цикл 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);

0
ответ дан Jeppsen 17 August 2018 в 13:04
поделиться
  • 1
    Спасибо, это решение настолько просто и легко понять для начинающего, как я. – mesopotamija9 13 July 2018 в 11:38

Вы можете использовать для этого цикл 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);

0
ответ дан Ankit Agarwal 17 August 2018 в 13:04
поделиться

Вы можете использовать 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);

1
ответ дан BlackBeard 17 August 2018 в 13:04
поделиться

Вы можете взять объект с произвольным количеством свойств и создать массив объектов.

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; }

0
ответ дан Chris 17 August 2018 в 13:04
поделиться

Вы можете использовать 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);

3
ответ дан Nikhil Aggarwal 17 August 2018 в 13:04
поделиться

Традиционный, но совместимый способ

Примечание. Большинство решений на этой странице не проверяют, имеют ли переменные 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
0
ответ дан Then008 17 August 2018 в 13:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: