2016-12-16 2 views
0

У меня есть функция, возвращающая массив, который выглядит следующим образом:Хотите превратить вывод в массив nodejs

.then(Cause.findOne(causeId).populate('admins').exec(function (err, cause) { 

var ids = cause.admins.map(function(admin) { 
    return admin.id; 
}) 
    var join_ids = "'" + ids.join("','"); 

Выход console.log (join_ids);

'26c14292-a181-48bd-8344-73fa9caf65e7','64405c09-61d2-43ed-8b15-a99f92dff6e9','bdc034df-82f5-4cd8-a310-a3c3e2fe3106' 

Я пытаюсь передать первое значение массива в другой функции в качестве USERID фильтра:

let message = { 
    app_id: `${app_id}`, 
    contents: {"en": "Yeah Buddy," + Cause.name + "Rolling Like a Big Shot!"}, 
    filters: [{'field': 'tag', 'key': 'userId', 'relation': '=', 'value': `${join_ids}`}] 

И выход console.log (сообщения);

{ app_id: '*****************', 
    contents: { en: 'Yeah Buddy,undefinedRolling Like a Big Shot!' }, 
    filters: 
    [ { field: 'tag', 
     key: 'userId', 
     relation: '=', 
     value: '\'26c14292-a181-48bd-8344-73fa9caf65e7\',\'64405c09-61d2-43ed-8b15-a99f92dff6e9\',\'bdc034df-82f5-4cd8-a310-a3c3e2fe3106' } ], 
    ios_badgeType: 'Increase', 
    ios_badgeCount: 1 } 

Если я положил console.log (join_ids [0]);

2 

console.log (message);

 { app_id: '*****************', 
    contents: { en: 'Yeah Buddy,undefinedRolling Like a Big Shot!' }, 
    filters: 
    [ { field: 'tag', 
     key: 'userId', 
     relation: '=', 
     value: 2} ], 
    ios_badgeType: 'Increase', 
    ios_badgeCount: 1 } 

Мой вопрос, как я перехожу выход join_ids стать массивом, где индексы 0,1,2,3.

I.E.

join_ids[0] = '26c14292-a181-48bd-8344-73fa9caf65e7', join_ids[1] = '64405c09-61d2-43ed-8b15-a99f92dff6e9' 

Спасибо!

+0

Чтобы сериализовать массив в строку, вы можете просто использовать ['JSON.stringify'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Чтобы преобразовать его обратно в массив, используйте ['JSON.parse'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse). – qxz

ответ

1

на основе вашего второго фрагмента кода, он выглядит как его уже массив. чтобы подтвердить это, вы можете попробовать console.log следующее:

console.log(join_ids.length) // if this returns zero-based length then its an array 

console.log(typeof(join_ids)) // get the TYPE of the variable 

console.log(join_ids[0]) // see if you can address the FIRST value individually 


// for each loop over the array and console out EACH item in the array 
for (var i = 0; i < join_ids.lenght; i++) { 
    console.log(join_ids[i]); 
} 

, если вы обнаружите, что его строка, я бы удалить апостроф

yourstring = yourstring.replace(/'/g, "") // replaces all apostrophes 

и пространство после запятой, если присутствует, то просто обернуть значение в двойные кавычки и сделать

join_ids = join_ids.split(','); // makes the comma separated values an array 

Fiddle example here.

+0

Извините, я не думаю, что мой вопрос был ясен. Вывод в формате массива, я просто хочу, чтобы первое значение было join_ids [0] = '26c14292-a181-48bd-8344-73fa9caf65e7', join_ids [1] = '64405c09-61d2-43ed-8b15-a99f92dff6e9' – user2019182

+0

просто добавила часть, которая должна помочь ... она выглядит как ее STRING ... поэтому используйте регулярное выражение, чтобы удалить все апострофы, и вы остаетесь с разделенной запятыми строкой значений ... затем выполните join_ids.split (' , ') ... это приведет к тому, что join_ids [0] будет первым полным значением (элемент ПЕРЕД первой запятой или значением массива в позиции 0). Это помогает? – tamak

+0

также вижу ссылку на скрипт JS. Я просто добавил, где я иллюстрирую очистку строки, преобразование в массив и захват только одного из элементов массива. – tamak

Смежные вопросы