Я ищу, чтобы перебрать объект и ввести в определенные индексы, используя jQuery. Я использую Sweet Alert 2 и модальные цепочки, но мне нужно генерировать заголовки динамически. Названия в массиве ниже.

SA2 использует следующий объект:

var steps = [{
    title: 'Questions', 
    input: 'radio', 
    inputOptions: inputOptions, 
}] 

Я думаю, «каждый» какой-то после квадратной скобки.

["Washing Machine diagnosis", "Washing Machine type", "Have you ever had an engineer look at this fault?", "Has an engineer looked at this appliance in the last 6 months?", "Has anybody that is not a qualified repair engineer attempted to repair the Washing Machine?", "Duration of problem", "When did you purchase this Washing Machine?", "Do you have a receipt?"]

По сути, мне нужно создать:

var steps = [{
    title: 'Washing Machine diagnosis', 
    input: 'radio', 
    inputOptions: inputOptions, 
},
{
    title: 'Washing Machine diagnosis', 
    input: 'radio', 
    inputOptions: inputOptions, 
}] 

Спасибо за любую помощь

0
James Parsons 8 Дек 2016 в 17:28

4 ответа

Лучший ответ

Я не уверен, что понял ваш вопрос, но как насчет этого?

const titles = ["Washing Machine diagnosis", "Washing Machine type", "Have you ever had an engineer look at this fault?", "Has an engineer looked at this appliance in the last 6 months?", "Has anybody that is not a qualified repair engineer attempted to repair the Washing Machine?", "Duration of problem", "When did you purchase this Washing Machine?", "Do you have a receipt?"]

const steps = titles.map((title) => {
  return {
    title,
    input: 'radio',
    inputOptions
  }
})
0
mattias 8 Дек 2016 в 14:37

Вам нужен шаблон объекта:

var step = {
    title        : '',
    input        : 'radio',
    inputOptions : inputOptions
};

Тогда вы будете просто перебирать массив:

var titles = [
    "Washing Machine diagnosis",
    "Washing Machine type",
    ...
    "Do you have a receipt?"
];

var steps = titles.map((title) => {
    var clone = Object.assign({}, step);
    clone.title = title;
    return clone;
});

Или просто используйте Underscore.js для клонирования объектов, если вам не нравится assign()

1
Mister Spock 8 Дек 2016 в 14:40

Как насчет этого

$.each(steps, function(i, step){
     step.title = myArray[i];
});

Это использует JQuery для обхода массива.

0
Luke101 8 Дек 2016 в 14:35