< Сильный > EDIT : У меня есть массив в JS, как это: [6.7, 8, 7, 8.6], и я хочу, чтобы этот массив выглядел как массив объектов с именованными свойствами: [{y: 6.7} , {y: 8}, {y: 7}, {y: 8.6}]. Как мне сделать это в JS

Заранее спасибо!

-1
didi 12 Янв 2017 в 13:55

3 ответа

Лучший ответ

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

[6.7, 8, 7, 8.6].map(function(x) { return {y: x}})

Изменить - другой ваш вопрос из комментариев этого ответа:

var xCoordinates = [1.1, 2.2]
var yCoordinates = [3.3, 4.4]

var result = []

function mapper(key, values) {
  for (var i = 0; i < values.length; i++) {
    if (result[i] === undefined) {
      result[i] = {};
    }
    result[i][key] = values[i];
  }
}

mapper("x", xCoordinates);
mapper("y", yCoordinates);

console.log(JSON.stringify(result));
0
bert 12 Янв 2017 в 11:41

Если вам нужен действительный объект JSON, попробуйте это:

https://jsfiddle.net/6k3wnbs8/1/

var x = [6.7, 8, 7, 8.6];
for(var i in x) {
  x[i] = {}; 
  x[i]["y"] = x[i];
}

console.log(x);

Если вы хотите, чтобы оно было точно таким же, как указано в вопросе [y: 6.7 , y: 8, y: 7, y: 8.6], то ниже помогут:

var x = [6.7, 8, 7, 8.6];
for(var i in x) {
  x[i] = "y: " + x[i]
}
 console.log(x);
0
Anurag Sinha 12 Янв 2017 в 11:03

Используйте Array # map. Вот код

var arr = [6.7, 8, 7, 8.6];
function changeArr(num) {
    return 'y: '+num ;
};
var newarr= arr.map(changeArr);
console.log(newarr);
0
Rafique Ahmed 12 Янв 2017 в 11:03