JQUERY - удалить массив из многомерного массива с ключом

Для этого вам нужно использовать два UIViews. Один UIView будет работать как тень, а другой будет работать для закругленной границы.

Ниже приведен фрагмент кода Class Method с помощью protocol:

@implementation UIMethods

+ (UIView *)genComposeButton:(UIViewController <UIComposeButtonDelegate> *)observer;
{
    UIView *shadow = [[UIView alloc]init];
    shadow.layer.cornerRadius = 5.0;
    shadow.layer.shadowColor = [[UIColor blackColor] CGColor];
    shadow.layer.shadowOpacity = 1.0;
    shadow.layer.shadowRadius = 10.0;
    shadow.layer.shadowOffset = CGSizeMake(0.0f, -0.5f);

    UIButton *btnCompose = [[UIButton alloc]initWithFrame:CGRectMake(0, 0,60, 60)];
    [btnCompose setUserInteractionEnabled:YES];
    btnCompose.layer.cornerRadius = 30;
    btnCompose.layer.masksToBounds = YES;
    [btnCompose setImage:[UIImage imageNamed:@"60x60"] forState:UIControlStateNormal];
    [btnCompose addTarget:observer action:@selector(btnCompose_click:) forControlEvents:UIControlEventTouchUpInside];
    [shadow addSubview:btnCompose];
    return shadow;
}

В приведенном выше коде btnCompose_click: станет [делегатом] @required, который будет срабатывать при нажатии кнопки.

И здесь я добавил кнопку в свой UIViewController следующим образом:

UIView *btnCompose = [UIMethods genComposeButton:self];
btnCompose.frame = CGRectMake(self.view.frame.size.width - 75,
                          self.view.frame.size.height - 75,
                          60, 60);
[self.view addSubview:btnCompose];

Результат будет выглядеть следующим образом:

enter image description here [/g0]

0
задан Terry 17 January 2019 в 12:28
поделиться

2 ответа

@Nick дал решение без .splice, но если по какой-либо причине вы все еще хотите перейти к решению .splice, вы можете попробовать следующий код.

Вы проверяли id неправильно, в приведенном ниже решении будут удалены все объекты с id - 123456

http://jsfiddle.net/u0qshcvf/2/ [ 114]

0
ответ дан Vatsal Shah 17 January 2019 в 12:28
поделиться

Проблема с вашим текущим решением заключается в том, что вы не используете .filter правильно. .filter ожидает, что переданная им функция вернет значение boolean. Если возвращается true, текущий элемент будет сохранен во вновь созданном массиве. Если это false, текущий элемент будет опущен. Таким образом, вместо попытки удалить элемент из test_arr с помощью .splice, используйте .filter, чтобы решить, что остается, а что удаляется.

Также обратите внимание, что в вашем примере v ссылается на данный элемент (конкретный объект) в вашем test_array. Таким образом, вам не нужно указывать индекс 0 вашего объекта, скорее вам нужно получить id текущего объекта.

var test_arr = [{"name":"qqq", "city":"it","id":"123456"}, {"name":"ggg", "city":"uk","id":"777456"}];

test_arr = test_arr.filter(function(elem) {  
  return elem.id !== '123456'; 
}); 

console.log(test_arr); // [{"name": "ggg", "city": "uk", "id": "777456"}]

Если вы хотите «более чистое» решение, вы можете использовать функцию стрелки с разрушающим назначением :

test_arr = test_arr.filter(({id}) => id !== '123456'); // [{"name": "ggg", "city": "uk", "id": "777456"}]

var test_arr = [{"name":"qqq", "city":"it","id":"123456"}, {"name":"ggg", "city":"uk","id":"777456"}];

test_arr = test_arr.filter(({id}) => id !== '123456'); // [{"name": "ggg", "city": "uk", "id": "777456"}]
console.log(test_arr);

0
ответ дан Nick Parsons 17 January 2019 в 12:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: