@RSC
для меня критическое дополнение в Xcode версии 6.2 (6C86e) находится в override func viewDidLoad()
self.input.delegate = self;
Пробовал заставить его работать с ключом возврата в течение нескольких часов пока я не нашел ваш пост, RSC. Спасибо
Кроме того, если вы хотите скрыть клавиатуру, если вы касаетесь в любом месте экрана:
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.view.endEditing(true);
}
Вам необходимо явно извлечь эти значения:
const data = {"results":[{"_id":"5c3e2e2565d9440e8e4fa3f3","team1":2,"team2":4,"createdAt":"2019-01-15T19:01:57.842Z","updatedAt":"2019-01-15T19:01:58.020Z","__v":0,"user":"5c385ff34ae2c90d18fcb95f"},{"_id":"5c3e2e2865d9440e8e4fa3f4","team1":3,"team2":2,"createdAt":"2019-01-15T19:02:00.480Z","updatedAt":"2019-01-15T19:02:00.649Z","__v":0,"user":"5c385ff34ae2c90d18fcb95f"},{"_id":"5c3e2e5265d9440e8e4fa3f5","team1":1,"team2":3,"createdAt":"2019-01-15T19:02:42.642Z","updatedAt":"2019-01-15T19:02:42.814Z","__v":0,"user":"5c385ff34ae2c90d18fcb95f"}]}
const array = data.results.map(o => [o.team1, o.team2])
console.log(array)
Если у вас есть большое количество значений, вы может создать функцию, которая извлекает список значений из объекта, а затем использует его в качестве обратного вызова карты:
const data = {"results":[{"_id":"5c3e2e2565d9440e8e4fa3f3","team1":2,"team2":4,"createdAt":"2019-01-15T19:01:57.842Z","updatedAt":"2019-01-15T19:01:58.020Z","__v":0,"user":"5c385ff34ae2c90d18fcb95f"},{"_id":"5c3e2e2865d9440e8e4fa3f4","team1":3,"team2":2,"createdAt":"2019-01-15T19:02:00.480Z","updatedAt":"2019-01-15T19:02:00.649Z","__v":0,"user":"5c385ff34ae2c90d18fcb95f"},{"_id":"5c3e2e5265d9440e8e4fa3f5","team1":1,"team2":3,"createdAt":"2019-01-15T19:02:42.642Z","updatedAt":"2019-01-15T19:02:42.814Z","__v":0,"user":"5c385ff34ae2c90d18fcb95f"}]}
const getValues = keys => o => keys.map(key => o[key], {});
const array = data.results.map(getValues(['team1', 'team2']));
console.log(array)
Вы можете использовать array: reduce
для итерации по каждому объекту, извлечь два требуемых свойства и вставить их в массив накопителя результатов.
const data = {
"results": [
{
"_id": "5c3e2e2565d9440e8e4fa3f3",
"team1": 2,
"team2": 4,
"createdAt": "2019-01-15T19:01:57.842Z",
"updatedAt": "2019-01-15T19:01:58.020Z",
"__v": 0,
"user": "5c385ff34ae2c90d18fcb95f"
},
{
"_id": "5c3e2e2865d9440e8e4fa3f4",
"team1": 3,
"team2": 2,
"createdAt": "2019-01-15T19:02:00.480Z",
"updatedAt": "2019-01-15T19:02:00.649Z",
"__v": 0,
"user": "5c385ff34ae2c90d18fcb95f"
},
{
"_id": "5c3e2e5265d9440e8e4fa3f5",
"team1": 1,
"team2": 3,
"createdAt": "2019-01-15T19:02:42.642Z",
"updatedAt": "2019-01-15T19:02:42.814Z",
"__v": 0,
"user": "5c385ff34ae2c90d18fcb95f"
}
]
}
const processData = (data) => data.reduce((acc, {team1, team2}) => { // acc is accumulator array, destructure data object into properties you want
acc.push([team1, team2]); // create new array of teams 1 and 2 and push into accumulator
return acc;
}, []);
console.log(processData(data.results));
Вы можете уничтожить нужные свойства, сопоставив массив напрямую.
var data = { results: [{ _id: "5c3e2e2565d9440e8e4fa3f3", team1: 2, team2: 4, createdAt: "2019-01-15T19:01:57.842Z", updatedAt: "2019-01-15T19:01:58.020Z", __v: 0, user: "5c385ff34ae2c90d18fcb95f" }, { _id: "5c3e2e2865d9440e8e4fa3f4", team1: 3, team2: 2, createdAt: "2019-01-15T19:02:00.480Z", updatedAt: "2019-01-15T19:02:00.649Z", __v: 0, user: "5c385ff34ae2c90d18fcb95f" }, { _id: "5c3e2e5265d9440e8e4fa3f5", team1: 1, team2: 3, createdAt: "2019-01-15T19:02:42.642Z", updatedAt: "2019-01-15T19:02:42.814Z", __v: 0, user: "5c385ff34ae2c90d18fcb95f" }] },
result = data.results.map(({ team1, team2 }) => [team1, team2]);
console.log(result);