JavaScript Объект в массив объектов с ключом «имя» - PullRequest
1 голос
/ 22 января 2020

Вот мой начальный объект:

partners {
  0: "Proxy"
  2: "Skate"
  8: "Air"
}

Я хочу получить это:

partners [
  0:{name: "Proxy"}
  1:{name: "Skate"}
  2:{name: "Air"}
]

Я попробовал это без успеха:

var newArray = Object.values(this.initialObject).map(function (value) {
                                return { ['name']: obj[value] };
                            });

Спасибо большое много.

Ответы [ 8 ]

3 голосов
/ 22 января 2020
partners ={
  0: "Proxy"
  2: "Skate"
  8: "Air"
} 

var newpartners=[];
    Object.keys(partners).map(item=>{
      newpartners.push({name:partners[item]})
    })

console.log(newpartners);
3 голосов
/ 22 января 2020

const a = {
  0: "Proxy",
  2: "Skate",
  8: "Air"
}

const result = Object.values(a).map((value) => {
    return { name: value };
});
console.log(result)

Это будет сделано, вам пришлось заменить obj [значение] на значение и заменить ['имя'] на простое имя.

3 голосов
/ 22 января 2020

name не нужно заключать в [' '], так как это ключ, и вам не нужно использовать obj для получения значения, поскольку value - переменная, переданная функцией.

Попробуйте вместо этого:

var partners = {
    0: "Proxy",
    2: "Skate",
    8: "Air"
}

var newArray = Object.values(partners).map(function (value) {
    return {name: value};
});

console.log(newArray)
2 голосов
/ 22 января 2020

Йо может использовать следующие методы код

var partners = {
    0: "Proxy",
    2: "Skate",
    8: "Air"
}
var arr = [];
var keys = Object.keys(partners);
var values = Object.values(partners);

keys.forEach((ele, indx) => {
    arr.push({ "name": values[indx] });
})

console.log(arr);

var partners = {
    0: "Proxy",
    2: "Skate",
    8: "Air"
}

var newArray = Object.values(partners).map(function (value) {
    return { name : value };
});

console.log(newArray);
1 голос
/ 22 января 2020

Попробуйте:

 var tempPartners=[];
    for (x in partners) {
    var obj=JSON.parse(`{"name":"`+partners[x]+`"}`);
    tempPartners.push(obj);
    }
console.log(tempPartners);

Выход будет выглядеть как

 0: {name: "Proxy"}
    1: {name: "Skate"}
    2: {name: "Air"}
1 голос
/ 22 января 2020

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

Object.values(this.initialObject).map(name => ({name}));
1 голос
/ 22 января 2020

Вы можете попробовать что-то вроде этого, просто используя массив в качестве контейнера для конечного желаемого результата, и l oop поверх исходного объекта с for ... in l oop. Надеюсь это поможет. :)

var p = {
  "0": "Proxy",
  "2": "Skate",
  "8": "Air"
}
var a = [];
for(var key in p){
 if (p.hasOwnProperty(key)) {
   a.push({name: p[key]})
  }

}
console.log(a)

Другой способ l oop через объект - использовать метод Object.entries. Этот метод возвращает массив массивов, каждый массив содержит ключ и значение

* 1007. *

Итак, в вашем случае вы можете попробовать что-то вроде этого:

const entries = Object.entries(p);
var a = [];
for (const [key, value] of entries) {

  a.push({name: value})
}
0 голосов
/ 22 января 2020

Вы можете сделать что-то вроде этого

var partners = {"Proxy", "Skate","Air" };
var newArray = [];
for(var i = 0; i<=partners.length; i++){
    newArray.push({Name: element[i]});
}
console.log(newArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...