как преобразовать значения json в строку, разделенную запятыми, с помощью javascript

#javascript #json

#javascript #json

Вопрос:

У меня есть следующая строка JSON :

 {"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2} 

Я хочу location_id как

3,2

Комментарии:

1. Эта строка JSON заключена в виде массива? т. Е. окружена [] ?

2. попробуйте использовать библиотеку для этого предложения, json.org/js.html

3. @Mitul — Я откатил ваше редактирование, потому что, не получив ответа от OP, я не думаю, что мы можем просто предположить, что их входная строка отличается от того, что они сказали. (Хотя, очевидно, что это недопустимый JSON.)

Ответ №1:

Просто:

 var data = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}]
var result = data.map(function(val) {
  return val.location_id;
}).join(',');

console.log(result) 

Я предполагаю, что вам нужна строка, следовательно .join(',') , если вам нужен массив, просто удалите эту часть.

Комментарии:

1. К вашему сведению, .join по умолчанию значения объединяются запятой.

2. @Rajesh Да, но я добавил это для пояснения.

Ответ №2:

Вы можете добавить скобки к строке, проанализировать string ( JSON.parse ) и сопоставить ( Array#map ) свойство, а join ( Array#join ) — результат.

 var string = '{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}',
    array = JSON.parse('['   string   ']'),
    result = array.map(function (a) { return a.location_id; }).join();

console.log(result); 

Комментарии:

1. OP отредактировал вопрос, чтобы добавить заключающие квадратные скобки.

2. @MohitBhardwaj — Это редактирование не было сделано OP, и OP не ответил на запрос об этом, поэтому на данный момент я откатил это редактирование.

Ответ №3:

 obj=[{"name":"Marine Lines","location_id":3}, {"name":"Ghatkopar","location_id":2}]
var res = [];
for (var x  in obj)
if (obj.hasOwnProperty(x))
    res.push(obj[x].location_id);
console.log(res.join(",")); 

Ответ №4:

 var json = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}];

var locationIds = [];
for(var object in json){
  locationIds.push(json[object].location_id);
}

console.log(locationIds.join(",")); 

Ответ №5:

Вы также можете просмотреть .reduce и создать строку вручную

 var d = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}]

var location_id_str = d.reduce(function(p, c) {
  return p ? p   ','   c.location_id : c.location_id
},'');

console.log(location_id_str) 

Комментарии:

1. Это не работает, если в массиве более двух объектов.

2. Идеальное решение. Добывать более 500 значений, это заняло всего 100 мс времени.

Ответ №6:

попробуйте это

     var obj = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}];
    var output = obj.map( function(item){
      return item.location_id;
    });
    console.log( output.join(",") ) 

Ответ №7:

 var arr = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}];

var location_array = [];
for( var i = 0; i < arr.length; i   )
{
  location_array.push( arr[i].location_id );
}//for

var location_string = location_array.join(",");
console.log(location_string); 

Примечание: вам может потребоваться использовать JSON.parse(), если arr изначально он находится в строковом формате.

Ответ №8:

Вы можете использовать for..of цикл

 var arr = [{
  "name": "Marine Lines",
  "location_id": 3
}, {
  "name": "Ghatkopar",
  "location_id": 2
}];

var res = [];

for ({location_id} of arr) {res.push(location_id)};

console.log(res);